Во-первых, я знаю, что это вообще ужасная практика, потому что Cucumber предназначен только для тестирования выходных данных. Я просто хочу сделать это для одного очень-очень конкретного случая.
У меня есть приложение, которое обрабатывает аутентификацию пользователя с помощью файла cookie, установленного другим приложением, которое я поддерживаю. Я хотел бы написать очень простой интеграционный тест для аутентификации:
Given I have logged as "some_user" on the SSO server
When I visit any page
Then I should be logged in as "some_user"
Мое текущее определение шага для Then выглядит следующим образом:
Then /^I should be logged in as "([^"]*)"$/ do |username|
user = User.find_by_username(username)
assert_equal @controller.current_user, user
end
Очевидно, это не работает с «Неопределенным методом 'current_user' для nil: NilClass».
Если это не очевидно, ApplicationController#current_user возвращает либо пользователя, вошедшего в систему, либо nil.