我一直坚持这个问题一天。这就是控制器的样子:
class HarvestSchedulesController < ApplicationController
before_filter :authenticate_user!
respond_to :json
def show
@harvest_schedule = HarvestSchedule.find(params[:id])
respond_with @harvest_schedule
end
end
和规范:
let(:schedule) { mock_model(HarvestSchedule).as_null_object }
describe "GET show" do
before(:each) do
HarvestSchedule.stub(:find).with("1") { schedule }
end
it "finds the harvest schedule" do
HarvestSchedule.should_receive(:find).with("1") { schedule }
get :show, id: 1
assigns(:harvest_schedule).should eq schedule
end
end
当我运行规范时,错误是:
Failure/Error: HarvestSchedule.should_receive(:find).with("1") { schedule }
ActionController::UnknownFormat:
ActionController::UnknownFormat
# ./app/controllers/harvest_schedules_controller.rb:29:in `show'
# ./spec/controllers/harvest_schedules_controller_spec.rb:41:in `block (3 levels) in <top (required)>'
我根本看不到控制器或规格中的任何问题。该应用程序之前使用的是Rails 3.2.12并且所有规格都已通过。仅在将Rails版本升级到4.1.4后才会出现此错误。我使用的是rspec 2.14.1。有没有人遇到类似的问题?
干杯
答案 0 :(得分:3)
您已指定该操作仅响应此处的JSON请求:
respond_to :json
因此,您还需要在规范中请求JSON响应:
get :show, id: 1, format: 'json'