【问题标题】:What is Mocks Record and Playback?什么是模拟记录和回放?
【发布时间】:2010-07-08 08:53:12
【问题描述】:

我有一个模拟如下:

MockRepository mocks = new MockRepository();
ILoanRepository loanRepo = mocks.StrictMock<ILoanRepository>();
SetupResult.For(loanRepo.GetLoanExtended("sdfsdf")).Return(list.AsEnumerable<Loan>());
mocks.ReplayAll();

我的问题是我已经看到上面在 using 语句中被使用,例如

using (mocks.Record()) { // code here }
using (mocks.Playback()) { // code here }

这样做的目的和与我所做的不同之处是什么?

【问题讨论】:

    标签: mocking rhino-mocks


    【解决方案1】:

    这些只是做同样事情的另一种语法。以下是等价的:

    MockRepository mocks = new MockRepository();
    ILoanRepository loanRepo = mocks.StrictMock<ILoanRepository>();
    SetupResult.For(loanRepo.GetLoanExtended("sdfsdf")).Return(list.AsEnumerable<Loan>());
    mocks.ReplayAll();
    //test execution
    

    和:

    MockRepository mocks = new MockRepository();
    using (mocks.Record()) {
        ILoanRepository loanRepo = mocks.StrictMock<ILoanRepository>();
        SetupResult.For(loanRepo.GetLoanExtended("sdfsdf")).Return(list.AsEnumerable<Loan>());
    }
    using (mocks.Playback()) {
        //test execution
    }
    

    为了让事情变得更加复杂,有一种新的第三种语法,您没有明确的记录和回放阶段,称为 Arrange、Act、Assert Syntax,参见例如http://ayende.com/blog/archive/2008/05/16/rhino-mocks--arrange-act-assert-syntax.aspx

    【讨论】:

    • 谢谢,同样的东西,不同的语法。
    【解决方案2】:

    Record 块用于记录期望,所以在 ReplayAll 之前。

    Playback 块实际上是在调用测试,那么 ReplayAll 之后会发生什么。

    您可以在此处阅读更多信息:link text

    【讨论】:

    • 感谢您的回复,但对不起,我仍然感到困惑,例如,我上面的代码将返回 GetLoanExtended 调用的列表,所以我当然可以做一个 Assert.IsTrue() 语句来检查什么回报是什么预期的?当它做同样的事情时,我看不到将上述所有内容放入记录/播放语句的原因?
    猜你喜欢
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2011-10-09
    • 2010-09-21
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多