c# - C# Moq:无法转换 Moq.Mock给仲裁者
问题描述
我有一个界面Arbiter
public interface Arbiter
{
ContextData GetContextData();
}
我有一个实现这个接口的类。
public class ContextArbiter : Arbiter
{
ContextData m_data;
public CMBusContextArbiter()
:
base()
{
m_data = new ContextData();
}
public ContextData GetContextData()
{
return m_data;
}
}
我有另一个使用这个接口的类
public class SelectData
{
private Arbiter m_Arbiter;
public SelectData(Arbiter Arbiter)
{
m_Arbiter = Arbiter;
}
public string RetrieveId()
{
return m_Arbiter.GetContextData().RouteId;
}
}
现在我想对这个类进行单元测试
public class SelectDataTest : UnitTestBase
{
private Mock<Arbiter> Arbiter;
private SelectData SelectData;
[OneTimeSetUp]
public void OneTimeSetup()
{
Arbiter= new Mock<Arbiter>();
SelectData = new SelectData(Arbiter);
}
}
但似乎我无法将模拟对象传递给SelectData
班级。表明
无法将 Moq.Mock 转换为仲裁者。
我该如何解决这个问题。
解决方案
使用类的Object
属性Mock<T>
来访问模拟对象。
//...
Arbiter = new Mock<Arbiter>();
SelectData = new SelectData(Arbiter.Object);
//...
参考起订量快速入门
推荐阅读
- scala - 直接引用内部案例类中的值或方法
- javascript - 如何在 JavaScript 中匹配二维数组中的对?
- python - 如何在数字所在的确切位置裁剪图像?
- java - 我的反向 LinkedList 程序出了什么问题,导致堆栈溢出错误。
- r - 删除 R 中的假负值
- pandas - 熊猫将值更改为 nan
- gradle - 如何使用 Gradle Kotlin DSL 为 FatJar 指定入口点 Main-Class?
- node.js - Nginx 反向代理 + ExpressJS + Angular + SSL 配置问题
- javascript - 使用 JQuery 将弹出窗口附加到页面后,如何在弹出窗口中播放 gif?
- java - Java 8 Wildfly 14 OutOfMemoryError 阶段安装