如何为使用 RenderPartialViewToString 返回 JsonResult 的方法编写单元测试?

2024-03-27

如果您查看此链接中的示例:

http://www.atlanticbt.com/blog/asp-net-mvc-using-ajax-json-and-partialviews/ http://www.atlanticbt.com/blog/asp-net-mvc-using-ajax-json-and-partialviews/

如何为 JsonAdd 方法编写单元测试?我自己的代码中也有类似的情况,但是调用时RenderPartial View ToString错误:

ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView

我尝试了不同的方法来尝试阻止该调用,但没有成功。任何帮助表示赞赏。谢谢。


我在使用 RenderPartialViewToString 进行单元测试时遇到了很多麻烦。 我通过做两件事成功了。 我必须模拟视图引擎和控制器上下文。

这里的代码:

public ViewEngineResult SetupViewContent(string viewName, string viewHtmlContent)
    {
        var mockedViewEngine = new Mock<IViewEngine>();
        var resultView = new Mock<IView>();

        resultView.Setup(x => x.Render(It.IsAny<ViewContext>(), It.IsAny<TextWriter>()))
            .Callback<ViewContext, TextWriter>((v, t) =>
            {
                t.Write(viewHtmlContent);
            });

        var viewEngineResult = new ViewEngineResult(resultView.Object, mockedViewEngine.Object);
        mockedViewEngine.Setup(x => x.FindPartialView(It.IsAny<ControllerContext>(), viewName, It.IsAny<bool>()))
            .Returns<ControllerContext, string, bool>((controller, view, useCache) =>
            {
                return viewEngineResult;
            });

        mockedViewEngine.Setup(x => x.FindView(It.IsAny<ControllerContext>(), viewName, It.IsAny<string>(), It.IsAny<bool>()))
            .Returns<ControllerContext, string, string, bool>((controller, view, masterName, useCache) =>
            {
                return viewEngineResult;
            });

        ViewEngines.Engines.Clear();
        ViewEngines.Engines.Add(mockedViewEngine.Object);
        return viewEngineResult;
    }

    public void SetContext(ref PointCollecteLivraisonController controller)
    {
        SetupViewContent("MyViewName", "TheViewContent");

        var httpContextBase = new Mock<HttpContextBase>();
        var httpRequestBase = new Mock<HttpRequestBase>();
        var response = new Mock<HttpResponseBase>();
        var session = new Mock<HttpSessionStateBase>();
        var routes = new RouteCollection();
        RouteConfigurator.RegisterRoutes(routes);
        var routeData = new RouteData();
        routeData.Values.Add("controller", "PointCollecteLivraison");
        routeData.Values.Add("action", "RechercheJson");

        httpContextBase.Setup(x => x.Response).Returns(response.Object);
        httpContextBase.Setup(x => x.Request).Returns(httpRequestBase.Object);
        httpContextBase.Setup(x => x.Session).Returns(session.Object);
        session.Setup(x => x["somesessionkey"]).Returns("value");
        httpRequestBase.Setup(x => x.Form).Returns(new NameValueCollection());
        controller.ControllerContext = new ControllerContext(httpContextBase.Object, routeData, controller);
        controller.Url = new UrlHelper(new RequestContext(controller.HttpContext, routeData), routes);
    }

这就是我使用它的方式:

PointCollecteLivraisonController controller = new PointCollecteLivraisonController();
SetContext(ref controller);

这是我的资料来源: 查看引擎模拟:http://thoai-nguyen.blogspot.fr/2011/04/test-mock-mvc-view-engine.html http://thoai-nguyen.blogspot.fr/2011/04/test-mock-mvc-view-engine.html

控制器上下文模拟:ASP.NET MVC - 使用 Moq 框架对 RenderPartialViewToString() 进行单元测试? https://stackoverflow.com/questions/3621961/asp-net-mvc-unit-testing-renderpartialviewtostring-with-moq-framework

希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为使用 RenderPartialViewToString 返回 JsonResult 的方法编写单元测试? 的相关文章

  • 如何自定义 Google 测试失败消息?

    我编写了一个如下所示的 Google 测试 它将一些计算值与 CSV 文件中预期存储的值进行比较 class SampleTest public testing Test public void setupFile const std st
  • 正确的单元测试技术

    在使用 TDD 时 我发现自己需要测试一个包含查找值的常量 最终 哈希图 请查看更新中出现这种情况的原因 见下文 private static final Map
  • 是否有可能改变整个恐慌消息?

    NUnit 是一个 C 单元测试框架 允许您编写如下代码 Assert That someInt Is EqualTo 42 Assert That someList Has Member someMember 我喜欢这种代码 因为它看起来
  • 如何使用 IHttpActionResult 设置标头

    我想将令牌添加到 webapi 请求的标头中 我怎样才能做到这一点 这是我的示例代码 public IHttpActionResult Authenticate Login data var Token fdsf123546fskjhf g
  • 计算 TCP 重传次数

    我想知道在LINUX中是否有一种方法可以计算一个流中发生的TCP重传的次数 无论是在客户端还是服务器端 好像netstat s解决了我的目的
  • ASP.NET 4.0 中的模拟 HttpRequest

    我见过很多类似的帖子 但没有一个能真正解决我的特殊情况 我正在 ASP NET 4 0 Web 应用程序 ASP NET Forms 而不是 MVC 中编写单元测试 代码中有几个地方我称之为ServerVariables调用变量的集合 例如
  • Xcode 5:单元测试未运行

    我创建了一些测试用例 它们都通过了 那是因为它们没有被运行 从 Xcode 中 我得到 Test Suite All tests started at Test Suite All tests finished at Executed 0
  • 用什么? MVC、MVP 或 MVVM 还是……?

    我将启动一个 Java 项目来开发桌面应用程序 使用什么作为表示层模式 MVC MVP MVVM 或 如果可能的话 举一些可行的小例子 Actually the ultimate post you re looking for is thi
  • Autofixture 和 WebApi 控制器

    我正在使用 AutoFixture 尝试测试 WebApi 站点的控制器 我正在将 AutoData 功能与 Moq 一起使用 如上所述普洛的博客 http blog ploeh dk 2010 10 08 AutoDataTheories
  • 如何将Sinon添加到Angular 2测试中?

    我想添加Sinon进行测试 但无法让它运行 我已经安装了 sinon 和 karma sinon 作为 DevDependency 将 sinon 添加到我的 karma 配置文件中的框架中 frameworks jasmine brows
  • Boost 测试与 Google 测试框架

    我是单元测试世界的新手 基本上我是 C 开发人员 在一个大型产品上工作了近 3 年 现在我决定对我的代码执行自动化单元测试 为此 我在互联网上做了很多研究 遇到了很多工具和框架 最终选择了以下两个 1 Boost测试库 2 Google C
  • 如何在要测试的 React 组件内模拟自定义钩子?

    如果您有一个调用获取数据的自定义挂钩的 React 组件 那么在测试 React 组件时模拟内部自定义挂钩结果的最佳方法是什么 我看到两种主要方法 1 Jest mock 自定义钩子 这似乎是最推荐的方法 但它似乎要求测试对内部实现细节以及
  • 使用unittest时如何知道每次测试花费的时间?

    Unittest 仅显示运行所有测试所花费的总时间 但不单独显示每个测试所花费的时间 使用unittest时如何添加每个测试的计时 我想 目前不可能 http bugs python org issue4080 http bugs pyth
  • Global.asax 和 Error.aspx 中的 ASP.NET MVC 错误日志记录

    我正在创建一个 ASP NET MVC 应用程序 我需要在两个地方处理异常 Global asax vb 文件 Public Class MvcApplication Inherits System Web HttpApplication
  • Angular2 如何对自定义验证器指令进行单元测试?

    我为输入字段编写了一个非常简单的自定义验证器 import Directive from angular core import AbstractControl NG VALIDATORS from angular forms functi
  • 模拟 DBSet,EF 模型优先

    正如标题所说 我遵循模型优先方法 所以我的模型类是自动生成的 如果我想嘲笑DBContext衍生的MyModelContainer其中包含DBSets实体类 阅读一些内容 为了进行单元测试 您需要将其更改为IDBSet 是否可以做到这一点
  • 包括 PHPUnit 在内的麻烦

    我想开始为我的代码编写测试 因此我使用以下命令安装了最新的 PHPUnit wget http pear phpunit de get phpunit phar chmod x phpunit phar mv phpunit phar us
  • pydev 断点不起作用

    我正在使用 python 2 7 2 sqlalchemy 0 7 unittest eclipse 3 7 2 和 pydev 2 4 开发一个项目 我在 python 文件 单元测 试文件 中设置断点 但它们被完全忽略 之前 在某些时候
  • NSubstitute - 测试特定的 linq 表达式

    我在当前正在开发的 MVC 3 应用程序中使用存储库模式 我的存储库界面如下所示 public interface IRepository
  • 模拟对象不具有智能感知中显示的所有属性 - 在一个项目中,但在另一个项目中具有它们

    我正在嘲笑 VSTO 对象 在一个项目 我没有写 中它有以下代码 var listOfSheets new List

随机推荐