java - 在 Playframework 2.1 中测试预期渲染 View 的 Controller 操作

标签 java unit-testing playframework-2.1

在 playframework 2.1 中,是否可以测试某个操作以确保渲染的 View 是我期望的 View ?

在 ASP.NET MVC 3 中,AssertViewRendered().ForView("view") 正是测试了这一点。我们可以在2.1游戏中做到这一点吗?怎么办?

我想要实现的非常基本的 MVC 3 示例:

// Given the action GetUsers that renders the view "Users", I would like to assert
// this view as the one I expect and no other.
public class UserController
{
    public ActionResult Index() {
        return View("Users");
    }
}

[Test]
public void GetUsersRendersCorrectView()
{
    // Setup
    var userService = new Mock<UserService>();
    var userController = new UserController(userService.Object);

    // Excercise
    var result = userController.GetUsers();

    // Verify
    result.AssertViewRendered().ForView("Users");
}

谢谢。

最佳答案

Play 中的 View 渲染只是一个方法调用(模板被编译为简单的 Scala 函数)。

没有什么可以阻止您使用“手动构建”功能来实现 View 渲染。

因此,Action 返回的 Result 不知道内容是来自模板还是其他内容。这就是为什么 Play 无法实现您想要实现的那种断言。

关于java - 在 Playframework 2.1 中测试预期渲染 View 的 Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17689211/

相关文章:

java - 如何获得额外号码

java - 如何使用 Mockito/Powermockito 测试方法

c# - sql 查询 c# 的单元测试

java - 如何模拟注入(inject)属性文件值的字符串值?

scala - 如何在Scala中将对象列表转换为两个字段的映射

angularjs - Angular.js 和 Play Framework 2.1 与辅助函数集成

java - Play Framework 形式问题

java - 如何在 Spring 类 AuthenticationProvider 中拦截 403 http 状态时来自 REST API 的响应

java - 字符串是不可变的,那么 replace() 是如何工作的呢?

java - 使用按钮创建场景后在场景周围移动多个矩形