私がここで見ているGrailsプロジェクトでは、フィルターはリクエストにドメインオブジェクトを置きます...
class TokenFilters {
def filters = {
all( uri: '/hiphop/**' ) {
before = {
MyToken myToken = ...
request.myToken = myToken
MyToken は次のようになります。
class MyToken {
String id
String token
static mapping = {
token( index: true )
id( generator: 'uuid' )
}
...
}
私のコントローラーでは、myToken がリクエストから取り出されます。
MyController {
myaction {
MyToken accessToken = request.myToken
大丈夫だ。コントローラーの統合テストを作成したいと考えています。
@Test
void testLogin() {
def mc = new MyController()
def myToken = new MyToken(1234);
// set the request parameters
mc.request.parameters = [myToken:myToken];
def message = mc.action();
assertTrue(message.indexOf("trans") > 0)
}
これを実行すると、次のようになります。
Failure: testLogin(MyTests)
| java.lang.IllegalArgumentException: Parameter map value must be single value or array of type [java.lang.String]
at testLogin(MyTests.groovy:40)
したがって、Grails は文字列または単一の値しか許可しないようで、フィルターでリクエストにオブジェクトを配置するのは好きではありません。でも、同じオブジェクト タイプをフィルターに入れることができます。
機能テストに行かずにこれをテストしたいと思います。助けてください。Grails 2.2.1 を使用しています
ありがとう