我的控制器中有以下代码:
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
我是否检查响应不正确?
您可以检查响应对象并验证它是否包含期望值:
@expected = {
:flashcard => @flashcard,
:lesson => @lesson,
:success => true
}.to_json
get :action # replace with action name / params as necessary
response.body.should == @expected
编辑
将此更改为a post
会比较麻烦。这是一种处理方法:
it "responds with JSON" do
my_model = stub_model(MyModel,:save=>true)
MyModel.stub(:new).with({'these' => 'params'}) { my_model }
post :create, :my_model => {'these' => 'params'}, :format => :json
response.body.should == my_model.to_json
end
请注意,它mock_model
不会响应to_json
,因此需要一个stub_model
或真实的模型实例。
问题内容: 这是我的控制器内部的方法,其注释为 我期望作为我的json。 这是我的JUnit测试: 这是控制台输出: Even 是一个空字符串。 有人可以建议如何在我的JUnit测试方法中获取JSON,以便完成测试用例。 问题答案: 我使用TestNG进行单元测试。但是在Spring Test Framework中,它们看起来都很相似。所以我相信你的测试如下 如果要检查json键和值,可以使用js
这是我在控制器中的方法,由 我希望作为我的json。 这是我的JUnit测试: 以下是控制台输出: 甚至是是一个空字符串。 有人能建议如何在我的JUnit测试方法中获取JSON,这样我就可以完成我的测试用例了。
我有一个返回JSON的endpoint,如下所示: 和DTO类: 现在,我用这种方法测试返回的json数组的长度: 但是,有没有什么方法可以在不强制转换到FooDto数组的情况下完成它?类似这样:
下面是我的控制器代码: 上面的代码给了我一个例外:
我收到以下JSON作为响应 我正在解析这个JSON,如下所示 这很好用。 我的问题是,如果JSON中缺少任何一个键,例如“名称”丢失,它就会断裂,我将无法定义 是否可以检查是否存在,然后重试? https://jsfiddle.net/o2gxgz9r/9078/ 关于我修改了json的答案 但是他自己的财产不起作用了? 请看这把小提琴 https://jsfiddle.net/o2gxgz9r/
问题内容: 我有简单的集成测试 在最后一行中,我想将响应正文中收到的字符串与预期字符串进行比较 作为回应,我得到: 使用content(),body()尝试了一些技巧,但没有任何效果。 问题答案: @Sotirios Delimanolis回答完成了这项工作,但是我一直在寻找在此模拟Mvc断言中比较字符串的方法 所以这是 当然,我的主张失败了: 因为: 因此,这证明它有效!