通常我会避免控制器测试并坚持使用Model&黄瓜,但我发现自己需要一个,我似乎无法动弹。
以下代码很简单..我已经删除了所有内容
1 require 'spec_helper'
2
3 describe ExperiencesController do
4 describe "GET #show" do
5 context "experience item" do
6 it "redirects to the success url" do
7 experience = build(:experience)
8 get :show, :id => experience.id
9 #should be a test here :)
10 end
11 end
12 end
13 end
产生以下
Failures:
1) ExperiencesController GET #show experience item redirects to the success url
Failure/Error: get :show, :id => experience.id
NoMethodError:
undefined method `id' for Sinatra::Application:Class
# (__DELEGATE__):2:in `get'
# ./spec/controller_spec/experiences_controller_spec.rb:8:in `block (4 levels) in <top (required)>'
$ rake routes|grep experience
experiences GET /experiences(.:format) experiences#index
POST /experiences(.:format) experiences#create
new_experience GET /experiences/new(.:format) experiences#new
edit_experience GET /experiences/:id/edit(.:format) experiences#edit
experience GET /experiences/:id(.:format) experiences#show
PUT /experiences/:id(.:format) experiences#update
DELETE /experiences/:id(.:format) experiences#destroy
真的感觉像配置类型的东西 我不明白为什么会产生Sinatra错误 任何帮助表示赞赏
**更新**
SideKiq及其依赖关系sinatra安装在此rails应用程序的Gemfile中。 我相信sinatra可能会干扰控制器测试。
答案 0 :(得分:0)
好的..所以问题是错误的碰撞
1。)因为我使用Sidekiq我在配置路线中有以下内容
require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'
这段令人敬畏的代码安装了一个基于Sinatra的Web界面来监控Sidekiq
2。)如果你注意到我上面的目录错误
It was incorrectly spec/controller_spec instead of spec/controller
When that happens rspec doesnt know you are intending to test controllers and doesnt
load all the Get/post helpers , instead in the loaded stack the only thing it
found was sinatra which has a get method..
解决方案.. 将规范移动到正确的目录,以便正确推断出正确的依赖关系
IT10T错误..