【问题标题】:Model showing null模型显示为空
【发布时间】:2013-01-11 08:08:21
【问题描述】:

我正在编写单元测试用例。我正在使用 nunit 和 rhino mock。

我正在测试的方法是

        public ActionResult Details()
    {
        EmployeeDTO employee = this.EmployeeService.GetLoggedInEmployee();
        EmployeeModel model = assembler.ToEmployeeModel(employee);
        model.Title = GetEmployeeNameTitle(employee);
        model.Controller = "LoanOfficer";
        model.SelectedTab = MainNavTabs.LoanOfficerDetails;
        return View(model);
    }

而编写的测试用例是

        [Test]
    public void TestDetails()
    {
        EmployeeDTO employee = new EmployeeDTO();
        EmployeeService.Stub(a => a.GetLoggedInEmployee()).Return(employee);
        EmployeeModel model = new EmployeeModel{ Title = UtilityTests.Title, };
        assembler.Stub(b => b.ToEmployeeModel(employee)).Return(model);
        controller.Details();
        // Assert
    }

我已经完成了

        private ILoanModelAssembler loanAssembler;
    loanAssembler = TestUtility.DynamicMock<ILoanModelAssembler>();

但这里的模型仍然是 null 吗?有没有办法在测试方法中更正它?

【问题讨论】:

  • 在哪里它是空的吗?
  • 你的代码使用了汇编器,你的单元测试使用了loanAssembler...
  • 嗨 Andras Zoltan,我在模型上调试然后它会显示为空。
  • 嘿 Roy Dictus,仍然显示错误。

标签: c# asp.net asp.net-mvc-3 model nunit


【解决方案1】:

它为空,因为您没有从测试中控制 EmployeeService 的实际实例。您的 EmployeeService 依赖项是如何添加到控制器中的?是接口吗?您需要它是一个接口,以便 Rhino Mocks 可以模拟它,并且您需要将它注入到控制器的构造函数中,以便您可以将模拟的实例注入到您的测试中。像这样的:

private IEmployeeService employeeService;

public EmployeeController(IEmployeeService employeeService)
{
    this.employeeService = employeeService;
}

那么在你的测试中你可以说:

var employeeServiceStub = MockRepository.GenerateStub<IEmployeeService>();
var employee = new EmployeeDTO();
employeeServiceStub.Stub(a => a.GetLoggedInEmployee()).Return(employee);

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 1970-01-01
    • 2015-11-03
    • 2021-01-12
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    相关资源
    最近更新 更多