我有一个我想测试的方法,它会命中数据库。根据我所读到的,这是一个使用mock的绝佳机会。然而,我面临的问题是,我向对象传递了一个字符串,然后它创建了一个对象,并使用该对象访问数据库。
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))不起作用。
因为我是新手,这可能是一个简单的问题,但任何帮助都将非常感谢。
谢谢
发布于 2010-01-26 06:19:34
好的,通常你会传递实际的实例,这是你稍后所期望的。例如:
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"))));
}https://stackoverflow.com/questions/2133869
复制相似问题