5

/users/sign_upユーザー登録 (Gem Devise) を無効にしました。ルートが存在しないことを確認するテストを行いたいです。

これを行うために、テストを作成しましたspec/features/user_spec.rb

require 'spec_helper'
require 'capybara/rspec'

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

このテストを実行すると、次のエラーが発生します。

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

2 に答える 2

2

ここから:

be_routable マッチャーは、指定されたルートがルーティング可能であってはならないことを指定するために should_not と一緒に使用するのが最適です。ルーティング スペック (スペック/ルーティング内) およびコントローラー スペック (スペック/コントローラー内) で利用できます。

Capybara 機能内で次のことができます。

scenario "could not register " do
  visit("/user/sign_up")
  expect(page.status_code).to be(404)
end
于 2013-06-27T08:22:34.100 に答える