你好:)我是一个使用Moq框架和Unit的新手,我有一个问题,正如我将在下面演示的那样,我正在尝试Moq对MVC控制器进行服务调用,它将Session对象作为参数.在我的单元测试框架中,我创建了我的对象,在服务调用上设置它,我希望将它作为测试响应然后断言的结果.
问题:我尝试基于其他解决方案模拟HttpContext,这是因为在Controller端我得到了我在单元测试中设置的值,但是在设置服务调用时(我有"Mock(MockBehavior.Strict);")当调试器到达控制器时,在实际调用时,我得到一个错误,说没有定义SETUP.或者,如果我取出"MockBehavior.Strict",控制器上的"model"变量总是返回null,而不是我在Unit Test类上设置它的对象.
所以这是我的简单单元类,
[TestClass]
public class SearchControllerTest
{
#region Variables
Mock<ControllerContext> _controllerContext;
Mock<ISearchService> _serviceMock;
SearchController _controller;
#endregion
[TestInitialize]
public void SetUp()
{
// Arrange
_controllerContext = new Mock<ControllerContext>();
_serviceMock = new Mock<ISearchService>(MockBehavior.Strict);
_controller = new SearchController(_serviceMock.Object);
}
#region Success Test Cases
[TestMethod]
public void SearchListTest()
{
string pid = "val1";
string oid = "val2";
string lang = "val3";
string tid = "val4";
string pattern = "val5";
DocumentViewModel docModel = SetDocumentViewModel();
// Bypass
//_controllerContext.Setup(x => x.HttpContext.Session).Returns(_session.Object);
_controllerContext.SetupGet(p => p.HttpContext.Session["ProjectId"]).Returns("X");
_controllerContext.SetupGet(p …Run Code Online (Sandbox Code Playgroud)