简体   繁体   English

单元测试-使用SetOwinContext的Moq抽象类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM