저는 Grails newb를 꽤 원시적입니다. 그러나 저는 Groovy와 Java 배경을 가지고 있습니다. 이것은 내가 컨텍스트 자바 6에서Grails 테스트가 실패했습니다.
자바 8로 업데이트하고있어 고대 테스트 응용 프로그램입니다 : Grails는 2.3.9/자바 1.8.0_101 실패 테스트는 다음과 같습니다
@TestFor(PillsController)
@Mock(Pills)
class PillsControllerTests {
...
void testUpdate() {
controller.update()
assert flash.message != null
assert response.redirectedUrl == '/somethingPills/list'
response.reset()
populateValidParams(params)
def somethingPills = new SomethingPills(params)
assert somethingPills.save() != null
params.id = somethingPills.id
controller.update()
assert view == "/somethingPills/edit" //<--- FAILS HERE. VIEW IS NULL.
assert model.somethingPillsInstance != null
somethingPills.clearErrors()
populateValidParams(params)
controller.update()
assert response.redirectedUrl == "/somethingPills/show/$somethingPills.id"
assert flash.message != null
response.reset()
somethingPills.clearErrors()
populateValidParams(params)
params.id = somethingPills.id
params.version = -1
controller.update()
assert view == "/somethingPills/edit"
assert model.somethingPillsInstance != null
assert model.somethingPillsInstance.errors.getFieldError('version')
assert flash.message != null
}
}
내가 생각 " 보기 "는 모델/뷰/컨트롤러의 코드화 된 변형에 대한 참조입니다.
맨 위로 업데이트가 혼란 스럽습니다. 아무 것도 저장되지 않은 경우 업데이트하십시오. 나는 위의 이동 및 SomethingPills 선언 업데이트를 시도했다. 결과는 뷰가 여전히 null이라는 것입니다. 어떤 시각이 될지 예측할 수 있습니까?
내가 알아 차 렸던 또 다른 것. 업데이트 방법을 클릭하면 두 개의 매개 변수가 있음을 알 수 있습니다. Groovy가 기본적으로 매개 변수를 전달하지 못하거나 그 오류를 보게된다고 가정합니다. 나는 이것이 작동해야하는 방법인지는 모르겠지만 SomethingPills에서 ID & 버전을 가져 와서 통과하면 null 대신 "somethingPills/edit"가 아닌/somethingPills/show/1을 얻을 수 있습니다.
[편집] 내가이 발견했습니다. http://docs.grails.org/2.3.9/guide/scaffolding.html
Duuuhh ... ;-) 음, 좋아. 나는 그 문제를 안다. 어떤 이유로이 언어에서는 어떤 것이 예상되는 곳에서는 매개 변수를 전달하지 않아도됩니다. 이 경우 둘 중 하나가 null 인 경우 null이 반환됩니다. 그것은 익숙해지는 데 많은 시간이 걸릴 것입니다. – user447607
그루비 진실 (http://groovy-lang.org/semantics.html#Groovy-Truth)을 살펴볼 수 있습니다. 나는 당신의 미래 딜레마에 대답 할 수 있기를 바랍니다. – elixir