Grails: тестовые ограничения объекта предметной области - PullRequest
1 голос
/ 10 июля 2010

Я пытаюсь проверить ограничения моего User класса домена

class UserTests extends GrailsUnitTestCase {

    protected void setUp() {
        super.setUp()
        mockForConstraintsTests(User)
    }

    void testEmailConstraint() {

        // Test e-mail validation
        def user = new User(userRealName: 'bob', passwd: 'foo')

        // Check null not allowed
        saveAndVerifyError user, 'email', 'nullable'       
    }

    private void saveAndVerifyError(User user, String field, String constraintName) {

        assertFalse user.validate()
        assertEquals constraintName, user.errors[field]
    }
}

Я получил информацию о том, как это сделать на этой веб-странице , но когда я запускаю этот тест, я получаю следующее исключение

java.lang.NullPointerException
at grails.test.MockUtils$_addValidateMethod_closure83.doCall(MockUtils.groovy:973)
at grails.test.MockUtils$_addValidateMethod_closure84.doCall(MockUtils.groovy:1014)
at com.mycompany.security.UserTests.saveAndVerifyError(UserTests.groovy:31)
at com.mycompany.security.UserTests.this$6$saveAndVerifyError(UserTests.groovy)
at com.mycompany.security.UserTests$this$6$saveAndVerifyError.callCurrent(Unknown Source)
at com.mycompany.security.UserTests.testEmailConstraint(UserTests.groovy:18)

1 Ответ

3 голосов
/ 10 июля 2010

Оказывается, это ошибка в Grails 1.3.3 .Следующие изменения решают эту проблему

protected void setUp() {
    super.setUp()
    PluginManagerHolder.pluginManager = [hasGrailsPlugin: {String name -> true }] as GrailsPluginManager
    mockForConstraintsTests(User)
}

protected void tearDown() {
    super.tearDown()
    PluginManagerHolder.pluginManager = null
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...