C# 在RhinoMocks中重置模拟
我正在用Rhinomock编写NUnit测试。其中一个测试如下所示:C# 在RhinoMocks中重置模拟,c#,mocking,rhino-mocks,C#,Mocking,Rhino Mocks,我正在用Rhinomock编写NUnit测试。其中一个测试如下所示: mock = MockRepository<IFoo>.CreateMock(); // Arrange // During the Arrange part, mock.MyMethod() gets called several times. // Act // During the Act part, mock.MyMethod() should be called exactly once. // A
mock = MockRepository<IFoo>.CreateMock();
// Arrange
// During the Arrange part, mock.MyMethod() gets called several times.
// Act
// During the Act part, mock.MyMethod() should be called exactly once.
// Assert
mock.AssertWasCalled(x => x.MyMethod()).Repeat.Once();
mock=MockRepository.CreateMock();
//安排
//在Arrange部分中,mock.MyMethod()会被多次调用。
//表演
//在Act部分中,mock.MyMethod()应该只调用一次。
//断言
调用mock.assertwas(x=>x.MyMethod()).Repeat.Once();
这自然会失败,因为MyMethod()已被多次调用
有没有办法在Act部分之前重置对MyMethod()的调用计数,以便只捕获重置后的调用?也许这篇文章可以帮助您:
Mock.BackToRecord()可以做到这一点我认为@alexl的引用问题应该可以帮助您解决这个问题。但我很好奇,在测试的Act阶段之外,在什么情况下你的模拟会被调用。这可能是对象之间耦合过紧的迹象 作为一种可能的解决方法,如果在排列过程中没有保留状态信息,则始终可以创建另一个仅在排列阶段使用的模拟
IFoo
。//Arrange
// Arrange
// During the Arrange part, mock.MyMethod() gets called several times.
var mockRep = new MockRepository();
var mock = mockRep.dynamicMock<IFoo>();
Expect.Call(mock.MyMethod()).Return("desired result").Repeat.Time("count");
mock.Replay()
// Act
//test go here
// Assert
mock.AssertWasCalled(x => x.MyMethod()).Repeat.Once();
//在Arrange部分中,mock.MyMethod()会被多次调用。
var mockRep=new MockRepository();
var mock=mockRep.dynamicMock();
Expect.Call(mock.MyMethod()).Return(“期望的结果”).Repeat.Time(“计数”);
mock.Replay()
//表演
//测试到这里
//断言
调用mock.assertwas(x=>x.MyMethod()).Repeat.Once();
我认为这不会清除方法调用次数的计数,只会重置存根返回值。这感觉有点奇怪。为什么mock.MyMethod()?只是为了让我们更了解您的代码。