2013-06-27 64 views
4

我停用了用戶註冊(珠寶設計),我希望做一個測試,以確保路線/users/sign_up不存在。檢查路由不存在於軌道4,5

要做到這一點,我在spec/features/user_spec.rb

require 'spec_helper' 
require 'capybara/rspec' 

feature "Users" do 
    scenario "could not register " do 
    expect(:get => "https://stackoverflow.com/users/sign_up").not_to be_routable 
    end 
end 

創建了一個測試當我運行這個測試,我有這樣的錯誤:

1) Users could not register 
    Failure/Error: expect(:get => "https://stackoverflow.com/users/sign_up").not_to be_routable 
    NoMethodError: 
    undefined method `routable?' for {:get=>"https://stackoverflow.com/users/sign_up"}:Hash 
    # ./spec/features/user_spec.rb:8:in `block (2 levels) in <top (required)>' 

回答

2

here

的be_routable匹配與should_not最適合用來指定一個 定路線不應該路由。 它是路由規範 可用(在規格/路由)和控制器的規格(在規格/控制器)。

裏面一個水豚功能,你可以這樣做:

scenario "could not register " do 
    visit("/user/sign_up") 
    expect(page.status_code).to be(404) 
end 
+1

我也將我的測試內部控制和它的作品。訪問(「/用戶/ sign_up」)拋出一個沒有路由匹配[GET]「/用戶/ sign_up」的信息。感謝您的幫助 ! –

3

得到了類似的問題。解決的辦法是:

0.1創建spec/routing/users_routing_spec.rb

0.2在這個文件中寫:

require "spec_helper" 

describe UsersController do 
    describe "routing" do 

    it "routes to #index" do 
     expect(:get => "https://stackoverflow.com/users/sign_up").not_to be_routable 
    end 
end