首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSubstitute中频条件

NSubstitute中频条件
EN

Stack Overflow用户
提问于 2016-10-25 07:59:46
回答 1查看 298关注 0票数 0

日安!我需要你的帮助,我还有下一个测试:

代码语言:javascript
复制
    [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();

    }

它实际上测试下一段代码

代码语言:javascript
复制
    public override void Run(List<string> argument)
    {
        connectedCameras = argument;
        if(connectedCameras.Count == 0)
        {
            SetUIOnNoConnectedDevices();
        }
        else
        {
            FillCamerasListView();
        }
        View.Show();
    }

我的问题是FillCamerasListView方法没有调用测试。但正如它所预期的,在这种情况下,它调用了Run方法。所以,我无法想象是什么问题,所以我会非常感谢您的帮助。耽误您时间,实在对不起!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-27 03:14:01

这个例子过去了。问题似乎是在您的示例中更改传递给FillCamerasListView的参数,如注释中所讨论的那样。

有几种选择:

  1. 修改代码以符合测试的期望。即将给Run的参数传递给FillCamerasListView
  2. 使用view.ReceivedWithAnyArgs().FillCamerasListView(null)断言调用是在不担心传递的参数的细节的情况下进行的。
  3. 使用view.Received().FillCamerasListView(Arg.Is<List<string>>(x => Matches(x, argument)),其中Matches是您自己的代码,它根据传递给Runargument确定给定的参数是否正确。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40234454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档