在我们的解决方案中,我们曾经有一个非常古老的 JustMock 版本。我们编写了大约 7000 个测试,有时会出现一种模式是为所有测试用例设置某个接口的默认模拟,并在某些测试中“覆盖”该默认模拟。
这意味着在几百个测试中,我们创建一个模拟并安排它,然后创建另一个相同类型的模拟并安排它。然后我们将对第二个模拟进行断言。
几个月前我们更新到当前版本,现在这些相同类型的多个模拟似乎不再工作了。举个例子。我创建了两个相同类型的 Mocks 并断言第二个 mock 被调用一次。使用 2012 版的 JustMock,此测试失败,但使用更新的版本则不会失败。
那么 JustMock 在做什么,这会阻止我制作多个相同类型的模拟并对它们进行断言?为什么要这样做?
public interface IFoo
{
void Bar();
}
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var bar = Mock.Create<IFoo>();
Mock.Arrange(() => bar.Bar()).OccursOnce();
var foo = Mock.Create<IFoo>();
Mock.Arrange(() => foo.Bar()).OccursOnce();
Mock.Assert(foo); // Succeeds in recent versions, fails in older versions as I would expect
//Mock.Assert(bar); // Would fail as expected
}
}