1

単体テストケースを書いています。私はnunitとrhinoのモックを使用しています。

私がテストしている方法は

        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 ですか? テスト方法で修正する方法はありますか?

4

1 に答える 1

1

テスト内から EmployeeService の実際のインスタンスを制御していないため、null です。EmployeeService 依存関係がコントローラーにどのように追加されていますか? インターフェースですか?Rhino モックがそれをモックできるようにインターフェイスにする必要があり、モックされたインスタンスをテストに挿入できるようにコントローラーのコンストラクターに挿入する必要があります。このようなもの:

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);
于 2013-01-11T08:22:30.200 に答える