Rspec看不到json

时间:2015-09-11 10:56:23

标签: ruby-on-rails json rspec

当我运行我的规范时,我收到以下错误:

1) TasksController#index returns incompleted tasks 
     Failure/Error: it { expect(json).to_have(1).tasks }
     NameError:
       undefined local variable or method `json' for #<RSpec::ExampleGroups::TasksController::Index::ReturnsIncompletedTasks:0x00000005df8018>

以下是规范

describe "#index" do
    let!(:task){ FactoryGirl.create(:task) }

    context 'returns incompleted tasks' do

      before do
        get 'index', user_id: user.id, format: :json
      end

      it { expect(json).to_have(1).tasks }

    end
  end

这是我的控制器

def index
  #Some stuff
  render json: tasks
end

为什么会这样?

1 个答案:

答案 0 :(得分:1)

你做错了。这是测试json响应的方法

expect(response).to have_http_status(:success)
expect {
    JSON.parse(response.body)
}.to_not raise_error

要使用您首先需要解析的实际内容

result = JSON(response.body)
expect(result.length).to eq(1)