【发布时间】:2015-01-31 20:33:15
【问题描述】:
我有单元测试初始化:
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);
}
其中 app 是 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);
}
现在它需要修改我正在测试的方法,但至少它可以工作
【问题讨论】:
标签: c# wpf unit-testing moq