Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在RhinoMocks中重置模拟_C#_Mocking_Rhino Mocks - Fatal编程技术网

C# 在RhinoMocks中重置模拟

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

我正在用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.

// 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()?只是为了让我们更了解您的代码。