выпуск модульного теста граалей Спок


Я новичок в граалях. я просто плахой работник домен класс, который приведен ниже

class Employee {

    String firstName
    String lastName

    static constraints = {
    }
}

Я пытаюсь написать модульный тест на действие списка в EmployeeController, используя spock. Контроллер приведен ниже

class EmployeeController {

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

    def index() {
        redirect(action: "list", params: params)
    }

    def list(Integer max) {
        params.max = Math.min(max ?: 10,100)
        [employeeInstanceList: Employee.list(params), employeeInstanceTotal: Employee.count()]
    }
}

Затем я написал тестовый случай, приведенный ниже

import grails.test.mixin.TestFor
import spock.lang.Specification

@TestFor(EmployeeController)
class EmployeeControllerUnitSpec extends Specification {

    def 'test index'() {
        when:
        controller.index()

        then:
        // httpcode ? 200
        //println response (GrailsMockHttpServletResponse)
        response.redirectedUrl == '/employee/list'
    }

    def 'test list empty'() {
        when:
        controller.list( 10 )
        // Employee.list()

        then:
        model.employeeInstanceTotal == 0;

    }
}

Здесь тестовый случай для индекса работает корректно, но тест для пустого списка выдает некоторую ошибку в консоли. Расшифровка ошибки в консоли

| Running 2 spock tests... 2 of 2
| Failure:  test list empty(com.test.EmployeeControllerUnitSpec)
|  groovy.lang.MissingMethodException: No signature of method: com.test.Employee.list() is applicable for argument types: () values: []
Possible solutions: list(), list(java.util.Map), last(), last(java.lang.String), last(java.util.Map), first()
    at com.test.EmployeeController.list(EmployeeController.groovy:15)
    at com.test.EmployeeControllerUnitSpec.test list empty(EmployeeControllerUnitSpec.groovy:21)
| Completed 2 spock tests, 1 failed in 3231ms
| Tests FAILED  - view reports in /mnt/hdd2/home/T-2060/workspace/testing/target/test-reports

Может ли кто-нибудь предложить, как можно решить эту проблему выпуск

Заранее благодарю

1 2

1 ответ:

Среда модульного тестирования не будет иметь доступ к домену, пока он не будет издеваться.

Используйте @Mock(Employee) и настройте тестовые данные в действии Employee to test list ().