小编Tia*_*C13的帖子

模拟服务调用对象返回null

你好:)我是一个使用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)

c# asp.net-mvc unit-testing moq unity-container

1
推荐指数
1
解决办法
6638
查看次数

标签 统计

asp.net-mvc ×1

c# ×1

moq ×1

unit-testing ×1

unity-container ×1