[英]Unit test - Moq abstract class with SetOwinContext
I am trying to Moq
to test abstract class method
. 我正在尝试Moq
测试abstract class method
。
var mock = new Mock<BaseStudentController>();
mock.CallBase = true;
var ta = mock.Object;
var result = await ta.ActivateStudent"User1@test.com", true);
This successfully mocks the base class, and it hits the method in my abstract class. 这成功模拟了基类,并命中了我的抽象类中的方法。
Problem: 问题:
However, my abstract class is also expecting Request.GetOwinContext
. 但是,我的抽象类也期望Request.GetOwinContext
。 I am not sure how i can moq it along with my above request. 我不确定如何将其与上述要求一并订购。
You should set up ControllerContext
before calling ActivateStudent
您应该在调用ActivateStudent
之前设置ControllerContext
ta.ControllerContext = new HttpControllerContext { Request = new HttpRequestMessage() };
ta.Request.SetOwinContext( /* mock IOwinContext here */);
Sample owin context mock: 示例owin上下文模拟:
var owinMock = new Mock<IOwinContext>();
owinMock.Setup(o => o.Authentication.User).Returns(new ClaimsPrincipal());
owinMock.Setup(o => o.Environment).Returns(new Dictionary<string, object> { {"key1", 123} });
var traceMock = new Mock<TextWriter>();
owinMock.Setup(o => o.TraceOutput).Returns(traceMock.Object);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.