我有一个设置类,其中我有一个具有以下通用方法的接口:
T GetValue<T>(string key, bool optional = false, T defaultValue = default(T));
我正在处理使用此设置系统的另一部分,并使用上述方法从设置对象中提取信息:
Machine.BaudRate = Settings.GetValue<int>("BAUDRATE");
Machine.ComPort = Settings.GetValue<int>("COMPORT");
我希望通过单元测试对此进行测试,所以我写下以下内容:
Settings.Setup(s => s.GetValue<int>("BAUDRATE",It.IsAny<bool>(),It.IsAny<int>())).Returns(57600);
Settings.Setup(s => s.GetValue("COMPORT", It.IsAny<bool>(),It.IsAny<int>())).Returns(5);
但是当我运行测试时,它们都返回0。如果我进行回调,我可以看到回调被击中,因此设置正常。为什么不返回设置中指示的值?
回调示例(我有一个异常变量,我只是将其设置为null,以便在调试期间中断某些内容):
Settings.Setup(s => s.GetValue("COMPORT", false,It.IsAny<int>())).Callback(() => ex = null).Returns(5);
答案 0 :(得分:0)
我不知道为什么在我的代码中我得到0返回,但我找到了一种方法来验证我的输入。我的输入通过我正在测试的类路由到另一个接口。由于这一点,我可以更改该外观上的设置以验证输入:
Facade.SetupSet(f => f.BaudRate = It.IsAny<int>()).Callback((int value) => Assert.AreEqual(57600, value)).Verifiable();
Facade.SetupSet(f => f.ComPort = It.IsAny<int>()).Callback((int value) => Assert.AreEqual(5, value)).Verifiable();