2011-05-26 43 views
2

當我在Cucumber的步驟定義中使用visit方法,然後通過Capybara的Selenium驅動程序運行該步驟時,儘管未實施控制器,但它仍然通過。Rails 3.1。水豚的Selenium驅動程序不會捕捉路由錯誤

下面是一個例子:

特徵

# features/one.feature 

Feature: One 

    @selenium 
    Scenario: One 
    Given I visit the example page 

步驟定義

# features/step_definitions/example_steps.rb 

Given /^I visit the example page$/ do 
    visit example_path 
end 

路線

# config/routes.rb 

Example::Application.routes.draw do 
    resource :example 
end 

控制器

未實現

結果

Feature: One 

    @selenium 
    Scenario: One 
     Given I visit the example page 

    1 scenario (1 passed) 
    1 step (1 passed) 
    0m18.162s 

然而,當我使用RackTest驅動程序的所有作品,因爲它有望成爲和路由除非實施控制器,否則異常會上升。

這是同樣的例子,但與RackTest的用法:

功能

# features/one.feature 

Feature: One 

    @rack_test 
    Scenario: One 
    Given I visit the example page 

結果

Feature: One 

    @rack_test 
    Scenario: One 
    Given I visit the example page 
     uninitialized constant ExamplesController (ActionController::RoutingError) 
     ./features/step_definitions/example_steps.rb:2:in `/^I visit the example page$/' 
     features/one.feature:5:in `Given I visit the example page' 

Failing Scenarios: 
cucumber features/one.feature:4 # Scenario: One 

1 scenario (1 failed) 
1 step (1 failed) 

我怎麼能強迫水豚,以提高當路由錯誤使用Selenium驅動程序?

謝謝。

Ruby 1.9.2;

Ruby on Rails 3.1.0.rc1;

黃瓜0.10.3;

黃瓜欄0.5.0;

水豚1.0.0.beta1;

Selenium-webdriver 0.2.0。

+0

當您嘗試通過瀏覽器在本地查看頁面時(例如http:// localhost:3000/example),會發生什麼? – 2011-05-26 16:55:04

+0

我收到路由錯誤消息。 – Shamaoke 2011-05-26 17:25:16

回答

1

Selenium驅動程序在接收到「失敗」http代碼(如500)時不會失敗。如果將config/environments/test.rb保留爲默認值,則應該有一行config.action_dispatch.show_exceptions = false。因此,您可以將其設置爲true,或者您必須添加更多步驟以確保頁面實際顯示您期望的內容。

相關問題