tdd – 声明一个方法被调用一次

前端之家收集整理的这篇文章主要介绍了tdd – 声明一个方法被调用一次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想断言一个方法只被调用一次。我使用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(),我想这个测试失败。

下面是我如何验证一个方法调用一次。
[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();
}
原文链接:https://www.f2er.com/javaschema/282440.html

猜你在找的设计模式相关文章