2

Grails2.2.0を使用しています。これはテストする私の方法です:

def extendedSearchIndex () {
    log.debug("ExtendedSearchIndex ... ");
    def deviceClass = deviceService.getDeviceClass(request)
    if (deviceClass == "FeaturePhone") {
    render(view: '/featurephone/expanded_search')
    }
}

これは私のテスト方法です:

void testExtendedSearchIndex01() {
    deviceServiceMock.demand.getDeviceClass(1..10) { def myRequest, boolean verbose ->
        return "FeaturePhone"
    }
    controller.deviceService = deviceServiceMock.createMock()
    controller.extendedSearchIndex()

    assert view == "/featurephone/expanded_search"
}

ビューがnullであるため、このテストは失敗します。しかし、なぜそれはnullなのですか?そうではない/featurephone/expanded_searchですか?私は何かが足りないのですか?

ご協力いただきありがとうございます。

–クリス

4

1 に答える 1

2

getDeviceClass()とを必要defとするメソッドのシグネチャをモックしましたbooleanが、コントローラは。のみを必要とする別のシグネチャを使用していますdef。私はあなたのモックは次のようにすべきだと思います:

deviceServiceMock.demand.getDeviceClass(1..10) { def myRequest ->
  return "FeaturePhone"
}

によって返されるタイプがわかっているので、deviceClassに文字列を使用することをお勧めしますgetDeviceClass()

String deviceClass = deviceService.getDeviceClass(request)
if(deviceClass == "FeaturePhone")

また、STSなどのIDEを使用している場合は、コントローラーをデバッグして、サービスから返される値を確認できます。

于 2013-03-12T12:33:31.183 に答える