【问题标题】:Errors RSpec while testing API测试 API 时出现 RSpec 错误
【发布时间】:2017-01-01 15:55:19
【问题描述】:

刚开始学习 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>

如果我想在 My Spec 文件 #spec/api/event_api_spec.rb 中制作类似 Event.creat!(:name => 'My Event') 的东西,它会说

NameError: uninitialized constant Event

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

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

【问题讨论】:

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


    【解决方案1】:

    “get”是控制器规范中可用的方法,尝试使用类似

    describe 'Messages API', type: :controller do
    

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

    describe EventsController do
    

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

    require 'rails_helper'
    

    希望这会有所帮助,但是您的帖子有点混乱,不清楚您的 api 是在线还是什么,您不应该再次测试在线 api,您应该在本地测试,规范不应该与现实世界交流,除非真的很有必要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多