tin*_*tin 5 ruby rspec ruby-on-rails
我正在按照教程http://apionrails.icalialabs.com/book/chapter_three
但是当我运行控制器测试时,bundle exec rspec spec/controllers
我得到了未定义的方法错误:
Failures:
Api::V1::UsersController GET #show
Failure/Error: it { should respond_with 200 }
NoMethodError:
undefined method `respond_with' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x00000005d6f650>
# ./spec/controllers/api/v1/users_controller_spec.rb:17:in `block (3 levels) in <top (required)>'
Finished in 0.08435 seconds
2 examples, 1 failure
Run Code Online (Sandbox Code Playgroud)
请帮忙
编辑:以下是我的spec文件的内容
users_controller_spec.rb
require 'spec_helper'
describe Api::V1::UsersController do
before(:each) { request.headers['Accept'] = "application/vnd.marketplace.v1" }
describe "GET #show" do
before(:each) do
@user = FactoryGirl.create :user
get :show, id: @user.id, format: :json
end
it "returns the information about a reporter on a hash" do
user_response = JSON.parse(response.body, symbolize_names: true)
expect(user_response[:email]).to eql @user.email
end
it { should respond_with 200 }
end
end
Run Code Online (Sandbox Code Playgroud)
由于我们正在与response codes
您打交道,因此您可以在这里使用-
it { expect(response).to have_http_status(200) }
代替 it { should respond_with 200 }
这里也不需要shoulda-matchers
宝石。
参考-https: //www.relishapp.com/rspec/rspec-rails/docs/controller-specs
小智 0
这似乎是shoulda-matchers gem的错误,尝试更新到最新版本。
还要确保它位于 gemfile 中的 RSpec 之后
group :development, :test do
gem 'rspec-rails'
gem 'shoulda-matchers'
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1926 次 |
最近记录: |