1

セッションが有効かどうかを検証するフィルターをテストしたいのですが、その方法がわかりません。

私のフィルターはこんな感じです。

class SampleFilters {
  def filters = {
    sessionFilter(controller:'*', action:'*') {
        before = {
            if(request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
                //doSomething
            }
        }
    }
  }
}

このフィルターの単体テストを作成したいと考えています。私が望むのは、テストを実行するときに「if」句を入力して「doSomething」を実行することです。現在、私はこのようなものを持っています。

import grails.test.mixin.*
import grails.test.mixin.web.FiltersUnitTestMixin;

import org.junit.*;

@TestMixin(FiltersUnitTestMixin)
class SessionFiltersTests {
  def controller

  @Test
  void testFilter() {
    controller = mockController(TestController)

    //I want to make sure when running the test it will enter the "if" clause

    withFilters(action: "testAction") { controller.testAction() }
    assert response.text
  } 
}

私はまだ単体テストの初心者なので、誰かが私を助けてくれれば幸いです。

ありがとう!

4

1 に答える 1

0

これを行う方法を見つけました。それが最良の選択かどうかはわかりませんが、私はアイデアから抜け出しています。これは私がそれを残した方法です:

import grails.test.mixin.*
import grails.test.mixin.web.FiltersUnitTestMixin;

import org.junit.*;

@TestMixin(FiltersUnitTestMixin)
class SessionFiltersTests {
  def controller

  @Test
  void testFilter() {
      controller = mockController(TestController)
      // Simulate session timeout
      controller.request.requestedSessionId = 1
      controller.request.requestedSessionIdValid = false
      withFilters(action: "test") { controller.test() }
      // Add your asserts
  }
}
于 2013-02-14T15:59:54.077 に答える