1

一般来说,我是模拟和单元测试的新手。请看下面我在网上找到的代码:

[Test]
        public void CanQueryViewUseAccountServiceToFundsTransfer()
        {
            _viewMock.Expects.One.Method(v => v.GetSourceAccount()).WillReturn("1234");
            _viewMock.Expects.One.GetProperty(v => v.TargetAccount).WillReturn("9876");
            _viewMock.Expects.One.GetProperty(v => v.TransferAmount).WillReturn(200.00m);
            _serviceMock.Expects.Exactly(1).Method(s => s.TransferFunds(null, null, 0m)).With("1234", "9876", 200.00m);
            _presenter.Transfer_Clicked();
            _mocks.VerifyAllExpectationsHaveBeenMet();
        }

我根本找不到任何文档来解释以下几行的作用:

_viewMock.Expects.One.Method //Is this saying it is expecting one and only one function to be called?
_viewMock.Expects.One.GetProperty

我试图自己寻找答案。例如,我在这里查看:http: //nmock3.codeplex.com/documentation,但我能找到的只是常见问题解答。

4

1 回答 1

1

基于ExpectsOfT.cs的源代码:

public IMethodSyntax<T> One
{
    get
    {
        return Exactly(1);
    }
}

人们可能会得出一个结论,它.One指的是对给定方法的一个期望/调用。

一般来说,我是模拟和单元测试的新手。

您使用 NMock 学习的任何原因?据所知,它不是很受欢迎,似乎也没有被积极开发。有些库具有更好的文档和社区,例如Moq或多或少等效代码的示例):

_viewMock.Setup(v => v.GetSourceAccount()).Returns("1234");

FakeItEasy

A.CallTo(() => _viewMock.GetSourceAccount()).Returns("1234");
于 2014-07-11T08:09:52.780 回答