Joh*_*ith 5 rspec capybara ruby-on-rails-4
我停用了用户注册(Gem Devise),并且想进行测试以确保路由/users/sign_up不存在。
为此,我在 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
Run Code Online (Sandbox Code Playgroud)
当我运行此测试时,出现以下错误:
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)>'
Run Code Online (Sandbox Code Playgroud)
遇到类似问题。解决办法是:
.1 创建spec/routing/users_routing_spec.rb
.2 在该文件中写入:
require "spec_helper"
describe UsersController do
describe "routing" do
it "routes to #index" do
expect(:get => "/users/sign_up").not_to be_routable
end
end
Run Code Online (Sandbox Code Playgroud)
从这里:
be_routetable 匹配器最好与 should_not 一起使用,以指定给定的路由不应该是可路由的。它在路由规范(在规范/路由中)和控制器规范(在规范/控制器中)中可用。
在 Capybara 功能中,您可以执行以下操作:
scenario "could not register " do
visit("/user/sign_up")
expect(page.status_code).to be(404)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1473 次 |
| 最近记录: |