【问题标题】:testing if a controller method (with Guid as parameter) calls repository method (also with guid as parameter)测试控制器方法(以 Guid 作为参数)是否调用存储库方法(也以 guid 作为参数)
【发布时间】:2013-08-12 19:28:03
【问题描述】:

我正在尝试为我的控制器方法之一编写测试方法。 这是控制器方法

public ActionResult LicenseDetails(Guid id)
    {
        var licenseDetails = _businessUnitRepository.GetLicenseDetails(id);
        return View(licenseDetails);
    }

这是我为检查它是否调用存储库中的方法而编写的测试。

 [TestMethod]
    public void ModuleDetails_Action_Calls_GetLicenseDetails()
    {
        _mockBusinessUnitRepository.GetLicenseDetails(Arg<Guid>.Is.Anything);

        _controller.LicenseDetails(Arg<Guid>.Is.Anything);

        _mockBusinessUnitRepository.AssertWasCalled(x=>x.GetLicenseDetails(Arg<Guid>.Is.Anything));
    }

我现在收到错误消息: 测试方法 AdminPortal.Tests.Controller_Test.Customer.BusinessUnitControllerTests.ModuleDetails_Action_Calls_GetLicenseDetails 抛出异常: System.InvalidOperationException:在录制时仅在模拟方法调用中使用 Arg。预期 1 个参数,已定义 3 个。

Ps:我正在使用 Rhino mock,我是这个测试的新手

【问题讨论】:

    标签: asp.net-mvc unit-testing asp.net-mvc-4 testing rhino-mocks


    【解决方案1】:

    我认为它在抱怨这条线:

    _controller.LicenseDetails(Arg<Guid>.Is.Anything);
    

    不要这样做,而是尝试传入一个实际值:

    _controller.LicenseDetails(Guid.NewGuid());
    

    【讨论】:

    • 仍然抛出错误说:测试方法 AdminPortal.Tests.Controller_Test.Customer.BusinessUnitControllerTests.ModuleDetails_Action_Calls_GetLicenseDetails 抛出异常:System.InvalidOperationException:在录制时仅在模拟方法调用中使用 Arg。预期 1 个参数,已定义 2 个。
    猜你喜欢
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多