Dav*_*vid 10 unit-testing rhino-mocks
我有这个问题,这可能是Rhino Mocks 3.5中的一个错误:
stubObj = MockRepository.GenerateStub(IObject);
stubObj.Stub(a=>a.Get()).Return (Guid.Empty); //1.stub
stubObj.Stub(a=>a.Get()).Return (Guid.NewGuid()); //2.stub, should overwrite the first one?
Run Code Online (Sandbox Code Playgroud)
这个:
var value = stubObj.Get();
Run Code Online (Sandbox Code Playgroud)
返回Guid.Empty,这是正确的行为吗?
如果你想要返回空guid已知的次数,你唯一需要做的就是告诉RhinoMocks多少次重复它,例如以下测试通过:
[Test]
public void MultipleStubsTest()
{
var testMock = MockRepository.GenerateMock<ITest>();
testMock.Stub(x => x.Get()).Return(Guid.Empty).Repeat.Once();
testMock.Stub(x => x.Get()).Return(Guid.NewGuid());
Assert.AreEqual(Guid.Empty, testMock.Get());
Assert.AreNotEqual(Guid.Empty, testMock.Get());
}
Run Code Online (Sandbox Code Playgroud)
如果你不知道在guid改变之前会调用多少次Get(),那么你总是可以使用.Do()并在那里编码(如果你需要更多细节,请告诉我).
应通过以下测试:
// arrange
var stubObj = MockRepository.GenerateStub<IObject>();
stubObj.Stub(a => a.Get())
.Return(Guid.Empty);
// act
var value = stubObj.Get();
// assert
Assert.AreEqual(Guid.Empty, value);
Run Code Online (Sandbox Code Playgroud)
如果你想返回一个新的指南:
// arrange
var stubObj = MockRepository.GenerateStub<IObject>();
stubObj.Stub(a => a.Get())
.Return(Guid.NewGuid());
// act
var value = stubObj.Get();
// assert
Assert.AreNotEqual(Guid.Empty, value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3545 次 |
| 最近记录: |