如何从没有得到Moq的模拟界面获得价值?

时间:2017-09-01 09:26:02

标签: c# tdd moq

我尝试使用 Moq 为特定界面编写一些测试。实现接口的对象的值由我们将调用的类设置" controller"在这个问题上。

接口:

public interface ITestInterface
{
    int number {set;}
}

我的模仿:

Mock<ITestInterface> myTestMock = new Mock<ITestInterface>();

要进行测试,我希望控制器在模拟类中设置数字,但是我需要获取值来测试它。像这样:

Controller c = new Controller(myTestMock.Object);
c.Initialize(); //initialization will set number to something
Assert.AreEqual(myTestMock.number, 3);

当然我收到一个错误,因为我无法读取该值,因为该接口没有&#34; get&#34;方法。

如何在不更改界面的情况下为我的模拟设置get?

1 个答案:

答案 0 :(得分:0)

使用您自己的实现

public class FakeTestInterface : ITestInterface
{
    public int NumberValue { get; private set; }
    public int number 
    {
        set
        {
            NumberValue = value;
        }
    }
}

然后在测试中

var testMock = new FakeTestInterface();
var controller = new Controller(testMock);
controller.Initialize(); 
Assert.AreEqual(testMock.NumberValue, 3);

所有模拟框架的设计都是为了让我们的生活更轻松,因为我们不需要写自己的&#34;假的&#34;实现。
当你遇到模拟框架的问题时 - 编写你自己的模拟对象