1

这是我的 rspec 代码:-

  it "which has max value" do
    get :index, Devise.token_authentication_key => @user.authentication_token, business_id: @business.id, max: '1'
    expect(request.flash[:alert]).to eq(nil)
    expect(response.body).to eq([@location].to_json(LocationFinder::API_PARAMS.merge(:root => false)))
  end

测试结果是——

预期:"[{\"address\":\"1120 Milky Way\",\"business_id\":1,\"city\":\"Cupertino]"

  got: "[{\"address\":\"1120 Milky Way\",\"business_id\":1,\"city\":\"Cupertino,\"distance\":260.33452958767384,]"

这里距离是一个额外的字段,我如何检查特定字段,或者如果不可能,如何消除 rspec 未检查的“距离”字段。

4

1 回答 1

3

您可以使用以下内容检查各个字段:

# get the first entry in the JSON array
json_response = JSON.parse(response.body).first

# compare each field
expect(json_response['address']).to eq(@location.address)
expect(json_response['business_id']).to eq(@location.business_id)
expect(json_response['city']).to eq(@location.city)

当然,您可能需要@location根据您的实现来调整您调用的确切方法,但这就是要点。

于 2013-04-01T07:03:39.873 回答