Khi viết kiểm tra đơn vị bằng cách sử dụng Moq bất cứ lúc nào tôi gọi số Elmah.ErrorSignal.FromCurrentContext
không thành công với ngoại lệ tham chiếu null. Tôi có thể thử các ControllerContext
và tôi muốn chỉ cần sử dụng một lệnh log lỗi như thế này ..Ghi nhật ký lỗi Elmah FromCurrentContext ngắt khi kiểm tra đơn vị
Elmah.ErrorSignal.FromContext(ControllerContext.HttpContext).Raise(e);
nhưng tiếc là ControllerContext.HttpContext
là loại HttpContextBase
và sẽ không làm việc với phương pháp khai thác gỗ lỗi này.
Có cách nào tốt hơn để gọi nhật ký lỗi Elmah trực tiếp không? Thật không may là đối tượng Application.HttpContext
không thể được mô phỏng (dưới đây ví dụ) hoặc điều đó cũng sẽ phục vụ mục đích.
Mock Application
và Application.HttpContext
:
ctrlCtx.SetupGet(x => x.HttpContext.ApplicationInstance)
.Returns(new Mock<HttpApplication>().Object);
ctrlCtx.SetupGet(x => x.HttpContext.ApplicationInstance.Context)
.Returns(new Mock<HttpContext>().Object);
Lỗi Được sản xuất:
cài đặt không hợp lệ trên một tổ chức phi ảo (overridable trong VB) thành viên
liên quan: [Làm thế nào tôi có thể giả lập thói quen ErrorSignal của Elmah?] (Http://stackoverflow.com/questions/1019833/how-can-i-mock-elmahs-errorsignal-routine) –