Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 MockMvc测试:model()和hasItem()方法未定义_Java_Spring_Junit_Spring Test - Fatal编程技术网

Java MockMvc测试:model()和hasItem()方法未定义

Java MockMvc测试:model()和hasItem()方法未定义,java,spring,junit,spring-test,Java,Spring,Junit,Spring Test,我想测试我的控制器,并使用以下方法进行测试: package spittr.web; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; import static org.springframework

我想测试我的控制器,并使用以下方法进行测试:

package spittr.web;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.junit.Test;
import org.mockito.Mockito;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.web.servlet.view.InternalResourceView;

import spittr.data.Spittle;
import spittr.data.SpittleRepository;

public class SpittleControllerTest {
    @Test
    public void shouldShowRecentSpittles() throws Exception {
        List<Spittle> expectedSpittles = createSpittleList(20);
        SpittleRepository mockRepository = Mockito.mock(SpittleRepository.class);

        Mockito.when(mockRepository.findSpittles(Long.MAX_VALUE, 20))
            .thenReturn(expectedSpittles);

        SpittleController controller = new SpittleController(mockRepository);

        MockMvc mockMvc = standaloneSetup(controller)
            .setSingleView(
                new InternalResourceView("/WEB-INF/views/spittles.jsp"))
            .build();

        mockMvc.perform(get("/spittles"))
            .andExpect(view().name("spittles"))
            .andExpect(model().attributeExists("spittleList"))
            .andExpect(model().attribute("spittleList", hasItems(expectedSpittles.toArray())));
    }

    private List<Spittle> createSpittleList(int count) {
        List<Spittle> spittles = new ArrayList<Spittle>();

        for (int i=0; i < count; i++) {
            spittles.add(new Spittle("Spittle " + i, new Date()));
        }

        return spittles;
    }
}
package-spittr.web;
导入静态org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
导入静态org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
导入静态org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.List;
导入org.junit.Test;
导入org.mockito.mockito;
导入org.springframework.test.web.servlet.MockMvc;
导入org.springframework.web.servlet.view.InternalResourceView;
导入spittr.data.Spittle;
导入spittr.data.SpitleRepository;
公共类SpittleControllerTest{
@试验
public void showRecentSpitles()引发异常{
List expectedSpittles=createSpittleList(20);
SpitleRepository mockRepository=Mockito.mock(SpitleRepository.class);
Mockito.when(mockRepository.findSpittles(Long.MAX_值,20))
.然后返回(预期的唾液);
SpittleController=新SpittleController(mockRepository);
MockMvc MockMvc=独立安装程序(控制器)
.setSingleView(
新的InternalResourceView(“/WEB-INF/views/spittles.jsp”))
.build();
mockMvc.perform(get(“/spittles”))
.andExpect(视图().name(“spittles”))
.andExpect(model().attributeExists(“spittleList”))
.andExpect(model().attribute(“spittleList”),hasItems(ExpectedSpitles.toArray());
}
私有列表createSpittleList(整数计数){
List spittles=new ArrayList();
for(int i=0;i
但是编译器无法理解assert部分中的model()方法和hasItem()方法,我应该将哪个包或哪个.jar文件导入该文件?

model()
org.springframework.test.web.servlet.result.MockMvcResultMatchers

view()
也是
org.springframework.test.web.servlet.result.MockMvcResultMatchers上的一个静态方法

org.springframework.test.web.servlet.result.MockMvcResultMatchers
org.springframework:springtest
提供

我怀疑您的类路径上有这个,否则对
MockMvc
的任何引用都不会编译

我认为您遇到的问题是关于
haseitems()
,这来自
org.hamcrest.Matchers
。此依赖项的Maven坐标为:

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-library</artifactId>
    <version>1.3</version>
    <scope>test</scope>
</dependency>

org.hamcrest
汉克雷斯特图书馆
1.3
测试
model()
org.springframework.test.web.servlet.result.MockMvcResultMatchers

view()
也是
org.springframework.test.web.servlet.result.MockMvcResultMatchers上的一个静态方法

org.springframework.test.web.servlet.result.MockMvcResultMatchers
org.springframework:springtest
提供

我怀疑您的类路径上有这个,否则对
MockMvc
的任何引用都不会编译

我认为您遇到的问题是关于
haseitems()
,这来自
org.hamcrest.Matchers
。此依赖项的Maven坐标为:

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-library</artifactId>
    <version>1.3</version>
    <scope>test</scope>
</dependency>

org.hamcrest
汉克雷斯特图书馆
1.3
测试