【问题标题】:rhino mocks mocking a call犀牛嘲笑嘲笑一个电话
【发布时间】:2010-01-26 06:19:33
【问题描述】:

我有一个方法,我想测试它访问数据库。根据我的阅读,这是使用模拟的绝佳机会。然而,我面临的问题是我将对象传递给一个字符串,然后它创建一个对象并用这个对象访问数据库,即

public void test(string t)
{
   Test t1 = new Test(t);
   db.Save(t1);
}

那么在我的测试中:

using(mockery.Record)
{
   Expect.Call(db.Save( ??? ))
}

问题是 - 我在这里期待什么?调用:

Expect.call(db.Save(new Test(t))

不工作。

由于我是嘲笑的新手,这可能是一个简单的问题,但任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 顺便说一句,我正在用 ITest = mockery.StrictMock();我有其他模拟成功,只是没有这个

标签: mocking rhino-mocks


【解决方案1】:

通常你会传递你以后期望的实际实例。例如:

public void test(string t)
{
    Test t1 = new Test(t);
    using(mockery.Record)
    {
       Expect.Call(db.Save(t1));
    }
    using(mockery.Playback()
    {       
        db.Save(t1);
    }
    mockery.VerifyAll();
}

但这可能是限制性的。然后,您实际上可以定义参数必须满足的标准。例如:

using(mockery.Record)
{
   Test instanceToCompare = new Test(t);    
   Expect.Call(db.Save(Arg<Test>.Is.Equal(instanceToCompare)));
}

或者另一个例子:

using(mockery.Record)
{
   Expect.Call(db.Save(Arg<Test>.Matches(t=>t.Name.Length.Equals("Test"))));        
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 2014-10-27
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 2019-12-20
    • 1970-01-01
    相关资源
    最近更新 更多