2016-03-28 13 views
0

Wall's Spring Boot uygulamasından hareket kitabındaki bir örneğe bakıyorum. Bu groovy ile yazılmış basit bir web uygulamasıdır. Proje, bir CLIP dosyası olmadan ve CLI ve Thymeleaf bağımlılıkları sağlamak için bir Grabs.groovy dosyası kullanılarak Spring CLI kullanılarak çalıştırılmakta, test edilmekte ve test edilmektedir. İki test dersi var. Birincisi bir JUnit testi ve ikincisi bir Spock belirtimidir. JUnit testleri dosyasıdır:Spread spesifikasyon testi ile bahar klipsi yayınlanıyor

import org.springframework.test.web.servlet.MockMvc 
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.* 
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.* 
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.* 
import static org.mockito.Mockito.* 

class ReadingListControllerTest { 

    @Test 
    void shouldReturnReadingListFromRepository() { 
     List<Book> expectedList = new ArrayList<Book>() 
     expectedList.add(new Book(
       id: 1, 
       reader: "Craig", 
       isbn: "9781617292545", 
       title: "Spring Boot in Action", 
       author: "Craig Walls", 
       description: "Spring Boot in Action is ..." 
      )) 

     def mockRepo = mock(ReadingListRepository.class) 
     when(mockRepo.findByReader("Craig")).thenReturn(expectedList) 

     def controller = new ReadingListController(readingListRepository: mockRepo) 

     MockMvc mvc = standaloneSetup(controller) 
         .build() 
     mvc.perform(get("/")) 
      .andExpect(view().name("readingList")) 
      .andExpect(model().attribute("books", expectedList)) 

    } 

} 

ve Spock özelliğidir:

import org.springframework.test.web.servlet.MockMvc 
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.* 
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.* 
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.* 
import static org.mockito.Mockito.* 

class ReadingListControllerSpec extends Specification { 

    MockMvc mockMvc 
    List<Book> expectedList 

    def setup() { 
    expectedList = new ArrayList<Book>() 
    expectedList.add(new Book(
     id: 1, 
     reader: "Craig", 
     isbn: "9781617292545", 
     title: "Spring Boot in Action", 
     author: "Craig Walls", 
     description: "Spring Boot in Action is ..." 
    )) 

    def mockRepo = mock(ReadingListRepository.class) 
    when(mockRepo.findByReader("Craig")).thenReturn(expectedList) 

    def controller = 
     new ReadingListController(readingListRepository: mockRepo) 
    mockMvc = standaloneSetup(controller).build() 
    } 

    def "Should put list returned from repository into model"() { 
    when: 
     def response = mockMvc.perform(get("/")) 

    then: 
     response.andExpect(view().name("readingList")) 
       .andExpect(model().attribute("books", expectedList)) 
    } 

} 

Bu dosyalar proje kök kapalı testler dizinde bulunmaktadır. JUnit testini "spring test tests/ReadingListControllerTest.groovy" komutuyla çalıştırırsam, test başarılı bir şekilde çalışır. Her iki testi de "Bahar testi testleri" komutuyla çalıştırırsam her iki test de başarılı bir şekilde çalışır. Ancak "Spock testini" spring test tests/ReadingListControllerSpec.groovy "komutuyla veya ReadListControllerTest.groovy dosyasını kaldırarak ve" spring test tests "komutunu kullanarak çalıştırırsam, şu derleme hatasını alırım:

ReadingListControllerSpec.groovy: 5: unable to resolve class org.mockito.Mockito 
@ line 5, column 1. 
    import static org.mockito.Mockito.* 
^

Spock testleri yazarken familliar değilim, bu yüzden sorunun ne olduğundan emin değilim.

cevap

0

Aynı sorunu yaşadım ve bunu anlayamadım ama ImportListControllerSpec.groovy dosyasından içe aktarma işlemini kaldırarak ve bir aldatma yerine tam anlamıyla sahte yöntemi kaldırarak elde edebildim ...

yani org.mockito.Mockito.mock (ReadingListRepository.class)

0

Ben aynı sorunu vardı ama şu bağımlılık ekleyerek çözüldü.

@Grab ("org.mockito: Mockito çekirdekli: 2.13.0")

Sistem spektrumu: Java 1.8.0_152 Groovy sürümü: bağımlılık dahil sonra 2.4.13

aşağıdaki komutu hat komutu herhangi bir sorun olmadan çalışır.

spring test tests/ReadingListControllerSpec.groovy