首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于mocking的方法拦截是什么?

关于mocking的方法拦截是什么?
EN

Stack Overflow用户
提问于 2010-09-15 00:41:33
回答 1查看 360关注 0票数 0

我读了很多关于mocking的文章,特别是使用Rhino mock,并且了解到Rhino mock只能模拟接口方法,这些方法是具体类中的虚方法或虚方法。我读到这是因为Rhino mock不能拦截非虚拟方法,这就是我被困住的地方。截取方法是什么意思?截取方法实际上是如何处理模拟的(特别是Rhino Mock)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-15 00:45:04

基本上,它的想法是创建一个“幕后”类,覆盖任何虚拟或接口方法,并在其中插入“模拟”代码。

高度简化的示例/概述

如果你有(基于你的评论问题)

代码语言:javascript
复制
public EmailHelper
{
    public virtual int SendEmail( MailMessage message) 
    {
        var server = ConnectToServer();
        int statusCode = server.SubmitEmail( message );
        return statusCode;    
    }
}

然后在一个测试中(我忘记了Rhino的语法,但这已经足够接近了)

代码语言:javascript
复制
var mock = Mocks.CreateMockFor<EmailHelper>();
Expect.Call(mock.SendEmail).Return(5);

在幕后,它将使用反射加载SomeClass Type对象,在其中搜索接口实现和虚拟方法,并生成类似如下的类

代码语言:javascript
复制
public MockEmailHelper
{
    public override int SendEmail( MailMessage message )
    {
        return 5;
    }
}

正如你所看到的,当你调用SendEmail的模拟版本时,它不会连接到服务器等,它只会做你告诉它做的事情,所以你可以测试依赖于‘电子邮件模块’的代码,而不是实际发送电子邮件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3710983

复制
相关文章

相似问题

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