测试API时出错RSpec

时间:2016-08-25 09:28:52

标签: ruby-on-rails ruby api rspec tdd

刚刚开始学习RSpec和TDD,并且无法弄清楚为什么它根本不起作用。



#spec/api/event_api_spec.rb
describe 'Messages API' do
  it 'check response' do
    get 'api.mydomain.dev/events'
    json = JSON.parse(response.body)
    # test for the 200 status-code
    expect(response).to be_success
  end
end




我在api.mydomain.dev上创建了我的API,我的文件夹结构看起来像app / controllers / api / events_controller.rb

因此,当我尝试运行bundle exec rspec时,它显示了

NoMethodError:
   undefined method `get' for #<RSpec::ExampleGroups::MessagesAPI:0x007fc34900cee0>

如果我想在我的规范文件#spec/api/event_api_spec.rb中尝试像Event.creat!(:name =&gt;&#39;我的事件&#39;)那样做 p>

NameError: uninitialized constant Event

所以我不明白如何要求我的app / controllers / api / events_controller.rb文件到Spec文件中获取我的事件类的实例以使其工作。

使用默认控制器它可以正常工作,我只对API设置感兴趣,thx

1 个答案:

答案 0 :(得分:0)

&#34;获得&#34;是控制器规格上可用的方法,尝试类似

describe 'Messages API', type: :controller do

告诉rspec你正在测试类似控制器的东西,或者只是做

describe EventsController do

关于&#34;未初始化的常量事件&#34;,在spec / api / event_api_spec.rb的开头试试这个

require 'rails_helper'

希望这会有所帮助,但是你的帖子有点令人困惑,不清楚你的api是在线还是什么,你不应该再次测试在线api,你应该在本地测试,规格永远不应该与真实的通信世界,除非它真的非常必要。