首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rhino模仿呼叫

rhino模仿呼叫
EN

Stack Overflow用户
提问于 2010-01-26 00:43:41
回答 1查看 203关注 0票数 0

我有一个我想测试的方法,它会命中数据库。根据我所读到的,这是一个使用mock的绝佳机会。然而,我面临的问题是,我向对象传递了一个字符串,然后它创建了一个对象,并使用该对象访问数据库。

代码语言:javascript
复制
public void test(string t)
{
   Test t1 = new Test(t);
   db.Save(t1);
}

然后在测试中,我有:

代码语言:javascript
复制
using(mockery.Record)
{
   Expect.Call(db.Save( ??? ))
}

问题是-我在这里期望的是什么?对以下内容的调用:

代码语言:javascript
复制
Expect.call(db.Save(new Test(t))

不起作用。

因为我是新手,这可能是一个简单的问题,但任何帮助都将非常感谢。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-26 06:19:34

好的,通常你会传递实际的实例,这是你稍后所期望的。例如:

代码语言:javascript
复制
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();
}

但这可能是有限的。然后,你可以实际定义参数必须填充的条件。例如:

代码语言:javascript
复制
using(mockery.Record)
{
   Test instanceToCompare = new Test(t);    
   Expect.Call(db.Save(Arg<Test>.Is.Equal(instanceToCompare)));
}

或者是另一个例子:

代码语言:javascript
复制
using(mockery.Record)
{
   Expect.Call(db.Save(Arg<Test>.Matches(t=>t.Name.Length.Equals("Test"))));        
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2133869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档