我的控制器中有以下代码:
format.json { render :json => {
:flashcard => @flashcard,
:lesson => @lesson,
:success => true
}
在我的RSpec控制器测试中,我想验证某个场景确实接收到了成功的json响应,所以我有下面这行代码:
controller.should_receive(:render).with(hash_including(:success => true))
尽管当我运行我的测试时,我得到以下错误:
Failure/Error: controller.should_receive(:render).with(hash_including(:success => false))
(#<AnnoController:0x00000002de0560>).render(hash_including(:success=>false))
expected: 1 time
received: 0 times
我是否错误地检查了响应?
发布于 2011-03-08 02:25:22
您可以像这样解析响应正文:
parsed_body = JSON.parse(response.body)
然后,您可以针对已解析的内容进行断言。
parsed_body["foo"].should == "bar"
发布于 2012-04-26 06:01:25
在Kevin Trowbridge's answer基础上构建
response.header['Content-Type'].should include 'application/json'
发布于 2013-03-22 14:43:30
简单易用的方法来做到这一点。
# set some variable on success like :success => true in your controller
controller.rb
render :json => {:success => true, :data => data} # on success
spec_controller.rb
parse_json = JSON(response.body)
parse_json["success"].should == true
https://stackoverflow.com/questions/5159882
复制相似问题