Grails 2.1单元测试命令对象mockForConstraintsTests不工作?

fer*_*gjo 3 grails unit-testing constraints mocking

我已经使用手动编写以及Grails为此命令对象生成的单元测试:

   package myapp

    @grails.validation.Validateable
    class SearchCommand {
       String basisBuild
       String buildToSearch

       static constraints = {
          basisBuild(blank: false)
       }
    }
Run Code Online (Sandbox Code Playgroud)

在我的手写单元测试失败之后,我使用了Grails:

create-unit-test  myapp.SearchCommand
Run Code Online (Sandbox Code Playgroud)

我填写了单元测试,并做了一个断言,应该通过模拟约束的每个文档:

package myapp
import static org.junit.Assert.*

import grails.test.mixin.*
import grails.test.mixin.support.*
import org.junit.*

@TestMixin(GrailsUnitTestMixin)
class SearchCommandTests {

    void setUp() {
        mockForConstraintsTests(SearchCommand)
    }

    void tearDown() {
        // Tear down logic here
    }

    void testSomething() {
        SearchCommand commandUnderTest = new SearchCommand()

        commandUnderTest.validate(basisBuild: "")

        assertEquals "blank", commandUnderTest.errors['basisBuild']
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我会失败?

grails> test-app
| Running 9 unit tests... 9 of 9
| Failure:  testSomething(com.siemens.soarian.sf.gap.SearchCommandTests)
|  java.lang.AssertionError: expected:<blank> but was:<null>
        at org.junit.Assert.fail(Assert.java:93)
Run Code Online (Sandbox Code Playgroud)

Per*_*sh8 5

我相信我发现grails支持在grails 2.0中单元测试Command对象的方法.您需要使用ControllerUnitTestMixin提供的mockCommandObject.

感谢Erik

http://www.jworks.nl/2012/04/12/testing-command-objects-in-grails-2-0/