【发布时间】:2016-10-25 07:59:46
【问题描述】:
美好的一天!我需要你的帮助,我有下一个测试:
[SetUp]
public void SetUp()
{
controller = Substitute.For<IApplicationController>();
view = Substitute.For<ICamerasView>();
presenter = new CamerasPresenter(controller, view);
argument = InitializeDevicesList();
presenter.Run(argument);
}
private List<string> InitializeDevicesList()
{
List<string> devicesList = new List<string>();
Device device = new Device();
devicesList.Add(device.Name);
return devicesList;
}
[Test]
public void RunIfDeviceListIsNotEmpty()
{
view.DidNotReceive().SetUIOnNoConnectedDevices();
view.Received().FillCamerasListView(argument);
view.Received().Show();
}
实际测试下一个代码
public override void Run(List<string> argument)
{
connectedCameras = argument;
if(connectedCameras.Count == 0)
{
SetUIOnNoConnectedDevices();
}
else
{
FillCamerasListView();
}
View.Show();
}
我的问题是 FillCamerasListView 方法没有在测试中调用。但正如预期的那样,在这种情况下它调用了 Run 方法。所以,我无法想象是什么问题,所以我将非常感谢您的帮助。感谢您的宝贵时间!
【问题讨论】:
-
`FillCamerasListView()` 是否调用
view.FillCamerasListView(connectedCameras)?你得到的断言异常是什么? -
是的,当然。我在 Presenter 中调用的 SetUIOnNoConnectedDevices 和 FillCamerasListView 只是 view.FillCamerasListView 和 view.SetUIOnNoConnectedDevices 的简单包装。我在这个字符串上遇到异常 view.Received().FillCamerasListView(argument);正在测试中。
-
异常错误:在 NSubstitute.dll 中发生类型为“NSubstitute.Exceptions.ReceivedCallsException”的异常,但未在用户代码中处理附加信息:预计会收到匹配的调用:FillCamerasListView(List
) 实际上没有收到匹配的电话。收到 1 个不匹配的调用(用“”字符表示的不匹配参数):FillCamerasListView(*List ) -
看起来包装器正在修改传递给 FillCamerasListView 的参数。你能把那个包装贴出来吗?
-
当然,但没有任何修改。 pastebin.com/N2UZ1gQp
标签: methods call nsubstitute