Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧测试:如何';通过';模型转换为控制器post方法_Java_Spring_Spring Mvc_Testing_Integration Testing - Fatal编程技术网

Java 弹簧测试:如何';通过';模型转换为控制器post方法

Java 弹簧测试:如何';通过';模型转换为控制器post方法,java,spring,spring-mvc,testing,integration-testing,Java,Spring,Spring Mvc,Testing,Integration Testing,我在Spring Boot中工作,试图为控制器编写一个集成测试,如下所示: public String pagerequestSubmit(@ModelAttribute Pagerequest pagerequest, Model model) { ... } 现在我正试图为这个控制器编写一个集成测试,如下所示: @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)

我在Spring Boot中工作,试图为控制器编写一个集成测试,如下所示:

public String pagerequestSubmit(@ModelAttribute Pagerequest pagerequest, Model model) {
...
 }
现在我正试图为这个控制器编写一个集成测试,如下所示:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes=PageAnalyzerInSpringApplication.class)
public class PagerequestControllerIntegrationTest {

@Autowired
PagerequestController pagerequestController;

@Test
public void testHappyPath() {


    Pagerequest mockPageRequest = new Pagerequest();
    mockPageRequest.setUrl("https://www.somedomain.com/");
    ....

    String outcome = pagerequestController.pagerequestSubmit(mockPageRequest);

    assertThat(outcome, is(equalTo("result")));

}
我在执行“mock pagerequest”并将其传递到post方法中时没有任何问题,因此我做到了这一点,但上面的测试不起作用,因为我得到:

PagerequestController类型中的方法pagerequestSubmit(Pagerequest,Model)不适用于参数(Pagerequest)

这很有意义,因为我没有传入任何类型模型的参数 我完全被困在如何做到这一点上

我试着实例化一个不起作用的模型,创建一个假模型,这个模型也不起作用,然后传入一个null的模型变量,该变量至少可以让测试运行,但在控制器中使用该模型时抛出null指针异常

有没有办法解决这个问题


提前谢谢

您的
pagerequestSubmit(@ModelAttribute Pagerequest Pagerequest,Model Model)
接受两个参数,一个是Pagerequest,另一个是Model,但在您的测试中,您只传递Pagerequest。您还需要传递Model对象。这只是测试类中错误的方法签名。 创建模型对象的模拟,并将其粘贴到代码中作为

 @Mock
    private Model model;

 String outcome = pagerequestController.pagerequestSubmit(mockPageRequest,model);
 assertThat(outcome, is(equalTo("result")));

也可以使用弹簧mv c测试,参考: