bee*_*lez 6 unit-testing rspec ruby-on-rails jbuilder
我正在寻找一种干净的方式来使用JBuilder并使用RSpec测试json输出.JSON测试的流行方式是实现as_json方法,然后在RSpec中将接收到的对象与object.to_json方法进行比较.但是我使用JBuilder的一个重要原因是我不想要to_json吐出的所有属性; 所以这打破了比较.
目前使用JBuilder我必须执行以下操作来测试RSpec结果:
1)创建一个Factory对象:@venue
2)在我的RSpec测试中创建一个包含"预期"JSON字符串的哈希
@expected => {:id => @venue.id,:name=>@venue.name..........}
Run Code Online (Sandbox Code Playgroud)
2)将@expected字符串与从JSON调用返回的results.response.body进行比较.
这似乎很简单,除了我用15个以上的属性渲染对象,并且构建@expected哈希字符串很麻烦且非常脆弱.有一个更好的方法吗?
小智 5
您应该能够使用RSpec视图规范来测试Jbuilder视图。您可以在https://www.relishapp.com/rspec/rspec-rails/v/2-13/docs/view-specs/view-spec上查看文档。
位于'app / views / api / users / _user.json.jbuilder'的文件的示例规范可能如下所示(spec / views / api / users / _user.json.jbuilder_spec.rb):
require 'spec_helper'
describe 'user rendering' do
let(:current_user) { User.new(id: 1, email: 'foo@bar.com') }
before do
view.stub(:current_user).and_return(current_user)
end
it 'does something' do
render 'api/users/user', user: current_user
expect(rendered).to match('foo@bar.com')
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6249 次 |
| 最近记录: |