7

在我正在从事的项目中,我有许多与水豚一起运行的 Cucumber 场景。

这些场景中的大多数都以“鉴于我已登录”步骤开始。目前我的实现是:

  visit path_to('the login page')
  fill_in('Username', :with => 'user')
  fill_in('Password', :with => 'password')
  click_button('Login')

这工作得很好,但是在每个场景之前加载和提交登录表单变得有点耗时。

有没有办法在此步骤中简单地设置会话,而不必每次都通过表单?

4

3 回答 3

2

像往常一样晚了一点,但这对我在 Rails 3.0.10 上有效。

features/support/authlogic.rb

require "authlogic/test_case"
World(Authlogic::TestCase)
ApplicationController.skip_before_filter :activate_authlogic
Before do
  activate_authlogic
end

然后在features/step_definitions/user_sessions_steps.rb

Given /^I am already logged in$/ do
  UserSession.create!(User.find_by_name!('user'))
end

显然,如果要登录特定用户,可以将用户名传递到步骤定义中。

完整的详细信息在这篇博文中:http: //laserlemon.com/blog/2011/05/20/make-authlogic-and-cucumber-play-nice/

于 2011-10-28T09:02:54.587 回答
0

你可以在黄瓜中使用背景..ie

Background:
    Given I am a logged-in admin user

这将使您的场景枯竭。

http://github.com/aslakhellesoy/cucumber/wiki/background

于 2010-10-27T00:49:51.043 回答
0

从另一个 auth gem Sorcery的 wiki中借用一个技巧:使用 Rspec、Capybara 和 Fabricator 进行集成测试,他们使用:

page.driver.post(user_sessions_url, { username: user, password: password })

这基本上调用了该user_sessions_controller#create方法,因此请确保参数匹配。所以对我来说,我做到了:

activate_authlogic
page.driver.post(user_sessions_url, { user_session: { email: user.email, password: user.password } })

这几天我一直在找这个。并且UserSession.create!无法为我工作。虽然这是一个老问题,但我在 Rails 4 上,希望它也可以帮助其他人。

于 2014-07-16T16:51:52.630 回答