首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NMock2中的UT转换为Moq。另外,NMock2中的.Will()代表什么?

将NMock2中的UT转换为Moq。另外,NMock2中的.Will()代表什么?
EN

Stack Overflow用户
提问于 2012-06-22 12:49:11
回答 1查看 250关注 0票数 1

我是NMock2和Moq框架的新手。我需要一些帮助将我当前项目中的NMock2代码转换为Moq代码:

代码语言:javascript
复制
var myMock= myMockery.NewMock<IMyInterface>();
var myRoleMock = myMockery.NewMock<IRoleInterface>();
var acceptAction = new MyAcceptAction(myRoleMock);
Stub.On(myMock).Method("Accept").Will(acceptAction);

我也不清楚上面代码中的Will()代表什么。我确实有一个想法,即NMock2中的Will(Return.Value(something))等同于Moq中的Returns(something)

那么Will(something)Will(Return.Value(something))是一样的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-22 16:02:03

要了解其中的差异,我们必须进行一些调查。让我们看看幕后的内容,Will方法的签名如下:

代码语言:javascript
复制
public void Will(params IAction[] actions)

现在,IAction接口起源于一个特别重要的接口,它就是IInvokable。顾名思义,这允许实现者被调用(通过Invoke方法)。它与Return.Value有什么关系?

代码语言:javascript
复制
public class Return
{
    public static IAction Value(object result)
    { 
        return new ReturnAction(result);
    }
}

再深入一点,我们会发现ReturnAction在它的Invoke方法中只是简单地设置了mock要使用/期望的返回值。然而,这不是重点。Return.Value是一个创建Will所需的IAction的简单包装器。

您的MyAcceptAction也必须实现此接口;以了解

代码语言:javascript
复制
Stub.On(myMock).Method("Accept").Will(acceptAction);

行,您将必须检查MyAcceptAction是如何实现的。特别是Invoke方法。

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

https://stackoverflow.com/questions/11150347

复制
相关文章

相似问题

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