gpt4 book ai didi

json - 使用 RSpec 测试 jbuilder View 时如何分配变量

转载 作者:行者123 更新时间:2023-12-03 14:39:50 24 4
gpt4 key购买 nike

我正在尝试编写 RSpec 测试来测试我使用 jbuilder 构建的模板,它最终为我的 API 提供 JSON 数据。我在 spec/controllers 中进行了很多测试来测试我的 Controller 功能,但我还希望测试我是否在我的 jbuilder View 中呈现正确的 JSON 字段。这是我设置的示例:

# app/views/api/v1/users/create.json.jbuilder
json.first_name user.first_name

# spec/views/api/v1/users/create.json.jbuilder_spec.rb
require 'spec_helper'
describe "api/v1/users/create.json.jbuilder" do
it "renders first_name" do
assign( :user, User.create( :first_name => "Bob" ) )
render
hash = JSON.parse( rendered )
hash.has_json_node( :first_name ).with( "Bob" )
end
end

当我运行 rspec spec/views/api/v1/users/create.json.jbuilder_spec.rb 时得到的是以下错误

Failures:

1) api/v1/users/create.json.jbuilder render a user
Failure/Error: render
ActionView::Template::Error:
undefined local variable or method `user' for #<#<Class:0x007fa2911c3118>:0x007fa29105f2b8>
# ./app/views/api/v1/users/create.json.jbuilder:1:in `_app_views_api_v__users_create_json_jbuilder___3806288263594986646_70168098229960'
# ./spec/views/api/v1/users/create.json.jbulder_spec.rb:6:in `block (2 levels) in <top (required)>'

无论我如何尝试将 user 对象分配/创建/传递给模板,它都会失败。知道我可能做错了什么吗?

最佳答案

经过大量阅读和迭代,这是可行的:

require 'spec_helper'
describe "api/v1/users/create.json.jbuilder" do

let( :user ) { User.create( :not_strict => true ) }

it "renders first_name" do
render :template => "api/v1/users/create", :locals => { :user => user }, :formats => :json, :handler => :jbuilder
rendered.should have_json_node( :first_name ).with( user.first_name )
end
end

注意:have_json_node 来自 api_matchers gem .

关于json - 使用 RSpec 测试 jbuilder View 时如何分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12837392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com