【问题标题】:Passing value in Mock Rhino test在 Mock Rhino 测试中传递价值
【发布时间】:2016-05-25 15:25:04
【问题描述】:

我有以下代码:

if (ActiveApplication.GetField("previous_date").Value != ActiveApplication.GetField("new_date").Value)
{
        //do something.. 
}

我想对此进行单元测试。作为 Rhino 测试的新手,我试图弄清楚如何传递值以便我进入循环。这是我尝试过的:

var previous_date = MockRepository.GenerateMock<IField>();
stubApplication.Stub(x => x.GetField("previous_date")).Return(previous_date);
previous_date.Stub(x => x.GetInternalValue()).Return("20160525");

var new_date = MockRepository.GenerateMock<IField>();
stubApplication.Stub(x => x.GetField("new_date")).Return(new_date);
new_date.Stub(x => x.GetInternalValue()).Return("20160525");

谁能告诉我我做错了什么?

【问题讨论】:

    标签: c# rhino-mocks


    【解决方案1】:

    这会返回previous_date,一个IField类型的接口:

    stubApplication.Stub(x => x.GetField("previous_date")).Return(previous_date)
    

    因为它不是基类实现,所以您的代码使用接口上的Value 属性,该属性也必须在模拟中设置,而不是使用GetInternalValue()。与new_stub 相同。

    编辑:您基本上需要执行以下操作(请注意,我不确定这是否是正确的语法,因为我没有使用过该框架,但我试图抓住本质):

    previous_date.Stub(x => x.Value).Return("20160525");
    

    【讨论】:

    • 这就是我在上面所做的对吗?但它不起作用?
    • 不是 Value 属性。你需要类似的东西(我不知道确切的语法):previous_date.Stub(x =&gt; x.Value).Return("20160525");;上面的代码示例中没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多