【发布时间】:2020-04-04 15:48:27
【问题描述】:
首先,我知道我的问题的标题并不适合这个问题;我只是不确定标题应该是什么。
据我所知,在使用 MOQ 创建抽象类的模拟时,如果对象的创建失败(由于异常处理或其他原因),模拟的创建将简单地返回 null。
在我的例子中,我想检查 ArgumentNullException 是否已在构造函数中抛出。但是由于我上面所说的,我的测试失败了,实际结果是null,而不是ArgumentNullException
public abstract class SomeClass
{
public SomeClass(ISomeDependency someDependency)
{
if (someDependency == null)
{
throw new ArgumentNullException(nameof(someDependency));
}
this.someDependency = someDependency;
}
}
public sealed class LogHandlerTests
{
[Test]
public void Constructor_Test_Should_Throw_ArgumentNulLException_When_SomeDependency_Is_Null()
{
Assert.Throws<ArgumentNullException>(() => new Mock<SomeClass>(null));
}
}
【问题讨论】:
-
你不是打算用
new Mock<SomeClass>(null).Object代替new Mock<SomeClass>(null)吗? -
@nalka 我需要检查构造函数是否通过异常,因此我必须断言该对象的创建。