Tôi mới vào Mocking frameworks và đã bắt đầu sử dụng RhinoMocks để hỗ trợ với MVC App Unit Testing của tôi.Làm thế nào để sử dụng Rhino Mocks để Mock một HttpContext.Application
Tôi đang sử dụng Scott Hanselmanns MVC Mock Helper để trợ giúp chế nhạo HttpContext. Tôi đã thành công (sau một thời gian) đã chế nhạo một số thứ tôi cần nhưng đã trở nên bất ngờ khi nói đến thuộc tính Ứng dụng của HttpContext.
Trong ứng dụng của tôi, tôi lưu giữ một đối tượng trong ứng dụng và lấy nó trong vòng một điều khiển như:
SomeObj foo = (SomeObj)Application["fooKey"];
này được tạo ra trên Application_Start trong MVC App của tôi.
cập nhật sau ĐÁP FIRST (thêm mã cho rõ ràng) Hiện nay trong các thiết lập thử nghiệm tôi làm:
HttpContextBase mockHttpBase = mocks.FakeHttpContext();
controllerToTest = new SomeController();
mocks.SetFakeControllerContext(controllerToTest);
HttpApplicationStateBase appState =
MockRepository.GenerateStub<HttpApplicationStateBase>();
Globals tmpAppGlobals =
new Globals();
mockHttpBase.Expect(ctx => ctx.Application).Return(appState);
mockHttpBase.Expect(ctx => ctx.Application[Globals.GlobalsKey]).
Return(tmpAppGlobals);
Trong thiết lập thử nghiệm đơn vị của tôi, tôi làm:
Globals tmpAppGlobals = new Globals();
controllerToTest.ControllerContext.HttpContext.
Expect(ctx => ctx.Application[Globals.GlobalsKey]).
Return(tmpAppGlobals);
Cuộc gọi này ném một ngoại lệ NullReference, cho đối tượng Application.
Câu hỏi của tôi là hai lần:
1) Đây có phải là cách tiếp cận đúng hay tôi đã làm điều gì đó sai từ góc độ thiết kế/kiến trúc?
2) Tại sao tính năng này không hoạt động ?!
Xin cảm ơn trước.
Tôi đã chỉnh sửa câu trả lời của mình; kiểm tra xem nó có hoạt động không? – Randolpho