java - 单元测试 如何在play框架中为DynamicForm创建模拟对象(java)

标签 java unit-testing playframework-2.2

我有一个使用 formfactory.form().bindFromRequest()

的 Controller

当我模拟它时,它会抛出一个空指针异常

bindFromRequest()

即。

when(formfactoryMock.form()).thenReturn(df.bind(params).bindFromRequest());

如何解决?

最佳答案

以下是我如何模拟它来解决类似问题的方法:

    import play.data.Form;
    import play.data.FormFactory;
    import com.fasterxml.jackson.databind.JsonNode;

    FormFactory mockFormFactory = mock(FormFactory.class);
    Form mockForm = mock(Form.class);
    Form mockDataForm = mock(Form.class);
    when(mockFormFactory.form(any(Class.class)))
            .thenReturn(mockDataForm);
    when(mockDataForm.bind(any(JsonNode.class)))
            .thenReturn(mockForm);
    when(mockForm.hasErrors())
            .thenReturn(false); // I was calling hasErrors, You may not be...
    when(mockForm.get())
            .thenReturn(updatedRecord); // updatedRecord was the model that I needed to pull from the form.

这并不是像OP询问的那样模拟bindFromRequest()方法(它是模拟bind()方法),但概念应该是相同的,只需替换when(mockDataForm.bind(any(JsonNode.class) ))) 类似when(mockDataForm.bindFromResult())

(至少我是这么认为的)。

无论如何,我无法找到任何如何在任何地方执行此操作的示例......所以希望这对其他人有帮助。

关于java - 单元测试 如何在play框架中为DynamicForm创建模拟对象(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37020477/

相关文章:

java - Android 中带有多个按钮的自定义圆圈

java - 线程 "main"java.lang.ClassCastException : com. google.gson.internal.LinkedTreeMap 中的异常无法转换为 t

image - Play Framework : Handling dynamic created files (images) in PRODUCTION mode

Java - 我的代码不会向类属性返回任何非空值

java - Spring添加mvc :resources tag

java - JUnit 4 与 TestNG 6

unit-testing - Elixir /ExUnit : how to test functions with system calls most elegantly?

ios - 无法在设备上运行单元测试 - 代码覆盖数据生成失败 (IOS)

scala - 在 playframework 假应用程序中快速执行测试

json - Play 框架 scala json 验证异常