我尝试使用 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?
答案 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;实现。
当你遇到模拟框架的问题时 - 编写你自己的模拟对象