2013-02-13 2 views
1

Я хотел бы протестировать фильтр, который проверяет правильность сеанса, но я не уверен, как это сделать.Неверный сеанс для теста блока фильтров в Grails

Мой фильтр - это что-то вроде этого.

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 
    } 
} 

Я все еще новичок в модульном тесте, поэтому, если кто-то может мне помочь, я буду признателен.

Спасибо!

ответ

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 
    } 
} 
Смежные вопросы