RSpec 3错误未定义方法`get'在请求测试中

时间:2014-06-24 08:41:59

标签: ruby-on-rails testing rspec request rspec3

在RSpec 3上迁移后,请求测试失败。 这是我的测试

describe 'GET /api/v1/activities' do
    let!(:user) { create(:user) }

    subject { json['activities'] }

   context 'when not authenticated' do
      let(:token) { user.authentication_token }
      let(:email) { 'unregistered.user@mail.com' }
      before :each do
        get '/api/v1/activities', {}, {token: token, email: email}
      end
      it { expect(response).to_not be_success }
    end
end

这是rspec log

Activities GET /api/v1/activities when not authenticated 
     Failure/Error: get '/api/v1/activities', {}, {token: token, email: email}
     NoMethodError:
       undefined method `get' for #<RSpec::ExampleGroups::Activities::GETApiV1Activities::WhenNotAuthenticated:0x0000000becfaf8>

它有什么用?

3 个答案:

答案 0 :(得分:5)

好的,迁移到RSpec3是导致此问题的原因。 我通过迁移到RSpec 2.99.0来解决它,我收到了一个提示,将此代码添加到我的spec_helper

RSpec.configure do |config|
  config.infer_spec_type_from_file_location!
end

现在它有效。乌拉!

答案 1 :(得分:1)

我已经设置了infer_spec_type_from_file_location!,但我们仍然在这里使用了capybara功能语法,这可能会将类型设置为功能。我将feature更改为describe后,就可以了。

答案 2 :(得分:0)

尝试添加帮助程序以请求规范。在spec_helper.rb

config.include RSpec::Rails::RequestExampleGroup, type: :request

此外,我假设您在规范定义中有type: :request