如何测试使用某些参数调用实例方法?

时间:2018-08-22 22:13:57

标签: java junit easymock spark-java

我正在构建一个简单的RESTful应用程序(使用Spark Java,尽管这个问题更为笼统)。

当请求/users索引路由时,将调用下面的Handler。它只是查询所有用户并呈现HTML模板(使用Velocity,但同样,这个问题更为笼统)。

package com.example.api;

import java.util.*;

import spark.Request;
import spark.ModelAndView;
import spark.template.velocity.VelocityTemplateEngine;

public class UsersIndexHandler {

  private Map<String, Object> locals;

  private UserDao userDao;

  public UsersIndexHandler(UserDao userDao) {
    this.locals = new HashMap<>();
    this.userDao = userDao;
  }

  public String execute(Request req, boolean formatAsHtml) {
    // Set locals so they are available in the view
    locals.put("users", userDao.all());

    // Render the view
    String body = new VelocityTemplateEngine().render(new ModelAndView(locals, "views/users/index.vm"))

    return body;
  }
}

我正在尝试为这种情况编写一个基本的Junit测试。我可以测试返回的String的内容,但是有两个问题-

  1. 页面的HTML可能很长,因此将实际结果与预期的测试字符串进行直接比较并不现实

  2. 视图的内容应在视图测试中进行测试。

测试此问题的“正确”方法是什么(通常被接受)?有没有一种方法可以设定对VelocityTemplateEngine()的期望,因此我们知道render()的调用正确且参数正确?

或者我应该只专注于测试locals Map对象,即使我必须在测试过程中暴露该对象才能访问它?

谢谢!

0 个答案:

没有答案