2

我是黄瓜和水豚的新手,所以也许这很容易。

我正在使用标题来检查用户是否已登录,并且在进行黄瓜测试时遇到问题。

我使用 Capybara 和 Cucumber 以及“添加标题黑客”:http ://aflatter.de/2010/06/testing-headers-and-ssl-with-cucumber-and-capybara/

我遇到的问题是它在每个专题报道中只设置一次标题。因此,如果我的故事不止一步,则标题消失并且用户不再登录。

一个例子:

Given I am logged in as a superuser
And I have a database "23456789" that is not active
And I am on the home page
When I follow the "Delete" link for "23456789.sqlite"
Then I should see "Deleted the database"

在这个故事中,“当我点击“23456789.sqlite”行的“删除”链接时,由于用户不再登录,因此将不起作用!

考虑过在黄瓜中使用会话或之前/之后。

有人知道如何解决这个问题吗?

4

1 回答 1

0

您可以通过在环境变量中传递用户名来实现此目的:

When /^I am logged in as a superuser$/ do
  ENV['RAILS_TEST_CURRENT_USER'] = 'admin'
end

application_controller.rb:

before_filter :stub_current_user

def stub_current_user
  if Rails.env == 'cucumber' || Rails.env == 'test'
    if username = ENV['RAILS_TEST_CURRENT_USER']
      @current_user = User.find_by_username(username)
    end
  end
end
于 2010-07-14T19:36:53.787 回答