c# - 将 Moq 模拟对象传递给构造函数

标签 c# .net mocking moq

我使用 RhinoMocks 已经有一段时间了,但才刚刚开始研究起订量。我遇到了这个非常基本的问题,令我惊讶的是这并不是开箱即用的。假设我有以下类定义:

public class Foo
{
    private IBar _bar; 
    public Foo(IBar bar)
    {
        _bar = bar; 
    }
    ..
}

现在我有一个测试,我需要模拟发送到 Foo 的 IBar。在 RhinoMocks 中,我会像下面这样简单地做,它会很好用:

var mock = MockRepository.GenerateMock<IBar>(); 
var foo = new Foo(mock); 

但是,在 Moq 中,这似乎不是以同样的方式工作。我正在做如下:

var mock = new Mock<IBar>(); 
var foo = new Foo(mock); 

但是,现在它失败了 - 告诉我“无法从‘Moq.Mock’转换为‘IBar’。我做错了什么?使用 Moq 执行此操作的推荐方法是什么?

最佳答案

需要通过mock的对象实例

var mock = new Mock<IBar>();  
var foo = new Foo(mock.Object);

您还可以使用模拟对象来访问实例的方法。

mock.Object.GetFoo();

moq docs

关于c# - 将 Moq 模拟对象传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7011572/

相关文章:

c# - 有条件地组合可观察量

c# - 为什么 ((IList<T>)array).ReadOnly = True 但 ((IList)array).ReadOnly = False?

c# - 接口(interface)的IL代码

c# - 使用 linq C# 从数据表中查找 "false"的编号

javascript - 如何在单元测试期间验证已调用某个javascript函数

c# - 如何使用 NSubstitute 模拟惰性类

c# - 指定的 key 太长;最大 key 长度为 767 字节 - ASPNet Identity MySQL

c# - 使用 Moq-Mock 库时发现不明确的匹配异常

c# - 什么时候在 C# 中使用 "using [alias = ]class_or_namespace;"?

Javascript 单元测试和重构(使用 Angular js 框架)