我有一个方法,我想测试哪个命中数据库。从我所看到的,这是一个使用模拟的完美机会。然而,我面临的问题是我将对象传递给一个字符串,然后它创建一个对象并使用该对象命中数据库,即
。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))
不起作用。
由于我是嘲笑的新手,这可能是一个简单的问题,但任何帮助都将不胜感激。
感谢
答案 0 :(得分:0)
通常你会传递你以后期望的实际实例。例如:
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"))));
}