成员不能使用实例引用访问;改为使用类型名称限定它 - Moq
本文关键字:类型 Moq getter 不能 实例 成员 访问 引用 | 更新日期: 2023-09-27 18:32:59
我有单元测试初始化:
private App fakeApp;
[TestInitialize]
public void initialize()
{
Mock<App> mock = new Mock<App>();
fakeApp = mock.Object;
mock.Setup(m => m.CommLineInfo.Mode).Returns(RunMode.INSTALL);
}
其中应用是 WPF 主类:
public partial class App : Application
{
public static CommandLine CommLineInfo { get; private set; }
}
其中下划线对象只是:
public class CommandLine
{
public RunMode Mode
{
get { return Something.Mode; }
}
}
而且我收到像主题一样的错误。我知道它可能看起来像重复,但我阅读了其他问题,但没有找到任何与模拟对象相关的解决方案
编辑:
正如Hantoun建议的那样,我需要制作包装纸:
public virtual RunMode RunMode
{
get
{
return App.CommLineInfo.Mode;
}
}
并在初始化中修改我的代码:
public void initialize()
{
Mock<AppWrapper> mock = new Mock<AppWrapper>();
fakeApp = mock.Object;
mock.Setup(m => m.RunMode).Returns(RunMode.INSTALL);
}
现在它需要修改我正在测试的方法,但至少它可以工作
尝试静态调用 CommLineInfo
属性:
mock.Setup(m => App.CommLineInfo.Mode).Returns(RunMode.INSTALL);