Ruby on rails 带rspec的Cover format.json
我想知道如何在rspec上从控制器测试这个format.json。以下是我想介绍的代码: 控制器:Ruby on rails 带rspec的Cover format.json,ruby-on-rails,ruby,json,rspec,Ruby On Rails,Ruby,Json,Rspec,我想知道如何在rspec上从控制器测试这个format.json。以下是我想介绍的代码: 控制器: def edit @ngo = Ngo.find(params[:id]) respond_to do |format| if request.xhr? if params[:zipcode] format.json { render json: Address.new(Correios::CEP::AddressFinder.get(params[
def edit
@ngo = Ngo.find(params[:id])
respond_to do |format|
if request.xhr?
if params[:zipcode]
format.json { render json: Address.new(Correios::CEP::AddressFinder.get(params[:zipcode]))}
end
else
@phones = Hash[@ngo.phones.map {|phone| [phone.id.to_s ,phone.phone_number]}]
@phones = @phones.to_json
format.html
end
end
end
我试过一些方法,但没有成功。有人知道我是怎么做的吗?谢谢:)这可能适合你。它涉及到我做一些我以前从未尝试过的事情,比如
xhr:post,:edit
和模块继承。让我知道这是否有效
# spec/controllers/some_controller_spec.rb
describe SomeController, type: :controller do
context "#edit" do
it "renders address as json" do
ngo = double(:ngo, id: "1")
correios_obj = double(:correios_obj)
json_address = double(:json_address)
expect(Ngo).to receive(:find).with("1").and_return(ngo)
expect(Correios::CEP::AddressFinder).to receive(:get).with("35950").and_return(correios_obj)
expect(Address).to receive(:new).with(correios_obj).and_return(json_address)
xhr :post, :edit, zipcode: "35950", id: "1"
expect(response.body).to eq json_address
end
end
end
还帮助我完成了xhr部分这将有助于向我们展示您的尝试和失败之处。我尝试从json获得任何响应,包括expect(json.parse(response.body))。到eq('1231'),但我真的不知道我在做什么。您没有显示您的规范代码。。。但通常类似的问题也存在于spec文件中。原因:RSpec尝试加速测试,默认情况下不提供响应。