4

在Aslak Hellesoy 发布的训练轮子中,他说他已经从最新版本的黄瓜中删除了 web_steps.rb 和 paths.rb。

我可以理解使用 Capybara api 而不是 web_steps.rb,但是您现在将如何测试您是否在特定页面上?

这就是我过去使用paths.rb的方式:

#admin_authentication.feature    
Then  I should be on the admin home page

# paths.rb
when /the admin home page/
  admin_root_path

# web_steps.rb
Then /^(?:|I )should be on (.+)$/ do |page_name|
  current_path = URI.parse(current_url).path
  if current_path.respond_to? :should
    current_path.should == path_to(page_name)
  else
    assert_equal path_to(page_name), current_path
  end
end

作为次要问题,我们应该这样做吗?

4

2 回答 2

13

我只是这样做,看看它是否适合你:

assert page.current_path == admin_root_path
于 2013-03-08T13:10:56.653 回答
8

通常,您不应在 Cucumber 步骤中测试页面路径。Cucumber 场景是从用户的角度编写的。用户通常只对页面内容感兴趣,因此测试应该检查页面内容而不是特定的 URL 或控制器。

而不是像这样从开发人员的角度编写场景:

Scenario: Administrator should be on the admin home page
  When I log in as an administrator
  Then I should be on the admin home page

从用户的角度写成这样:

Scenario: Administrator should have super-user tools
  When I log in as an administrator
  Then I should see the disable-abusive-user button
于 2013-03-09T17:03:35.350 回答