测试控制器方法(使用Guid作为参数)是否调用存储库方法(也使用guid作为参数)

时间:2013-08-12 19:28:04

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

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

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,我是这个测试用品的新手

1 个答案:

答案 0 :(得分:0)

我认为这是在抱怨这条线:

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

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

_controller.LicenseDetails(Guid.NewGuid());