Joe*_*Fan 1 c# nunit unit-testing moq mocking
在以下代码中,Test1成功但Test2失败:
protected Mock<IMyInterface> MyMock { get; set; }
[SetUp]
public virtual void Initialize()
{
MyMock = new Mock<IMyInterface>();
}
[Test]
void Test1()
{
// ... code that causes IMyIntervace.myMethod to be called once
MyMock.Verify(x=> x.myMethod(), Times.Once());
}
[Test]
void Test2()
{
MyMock.Verify(x=> x.myMethod(), Times.Once());
}
Run Code Online (Sandbox Code Playgroud)
这种行为实际上非常有用,但我无法弄清楚为什么它会像这样工作.似乎Test2也应该成功!
我唯一的想法是,以某种方式验证是否足够聪明,知道"myMethod"是从一个不同的测试用例调用的,因此它"不计算"?
顺便说一句,即使我在Test1中删除了对Verify的调用,也会发生同样的事情(Test2失败).
您的SetUp方法在每次测试之前运行,因此它在Test2之前重新创建模拟.
在Test2中,您没有做任何事情,因此验证失败.您正在尝试验证MyMethod是否已被调用 - 但它没有.所以,失败.
如果您只想创建一次模拟,则需要使用[TestFixtureSetUp].
| 归档时间: |
|
| 查看次数: |
541 次 |
| 最近记录: |