我想断言一个方法只被调用一次。我使用RhinoMocks 3.5。
这里是我认为会工作:
[Test] public void just_once() { var key = "id_of_something"; var source = MockRepository.GenerateStub<ISomeDataSource>(); source.Expect(x => x.GetSomethingThatTakesALotOfResources(key)) .Return(new Something()) .Repeat.Once(); var client = new Client(soure); // the first call I expect the client to use the source client.GetMeMyThing(key); // the second call the result should be cached // and source is not used client.GetMeMyThing(key); }
如果第二次调用GetMeMyThing()调用source.GetSomethingThatTakesALotOfResources(),我想这个测试失败。
下面是我如何验证一个方法被调用一次。
原文链接:https://www.f2er.com/javaschema/282440.html[Test] public void just_once() { // Arrange var a = MockRepository.GenerateMock<ISomeDataSource>(); a.Expect(x => x.GetSomethingThatTakesALotOfResources()).Return(new Something()).Repeat.Once(); a.Stub(x => x.GetSomethingThatTakesALotOfResources()).Throw(new InvalidOperationException("gotcha")); // Act // First invocation should call GetSomethingThatTakesALotOfResources a.GetMeMyThing(); // Second invocation should return cached result a.GetMeMyThing(); // Assert a.VerifyAllExpectations(); }