Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
9e520042
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
9e520042
编写于
6月 30, 2014
作者:
S
Sebastien Deleuze
提交者:
Rossen Stoyanchev
7月 01, 2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add support for asserting JSON
Based on the JSONassert library. Issue: SPR-10113
上级
d870b382
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
96 addition
and
3 deletion
+96
-3
build.gradle
build.gradle
+1
-0
spring-test/src/main/java/org/springframework/test/util/JsonExpectationsHelper.java
...org/springframework/test/util/JsonExpectationsHelper.java
+57
-0
spring-test/src/main/java/org/springframework/test/web/servlet/result/ContentResultMatchers.java
...mework/test/web/servlet/result/ContentResultMatchers.java
+27
-1
spring-test/src/test/java/org/springframework/test/web/servlet/result/ContentResultMatchersTests.java
...k/test/web/servlet/result/ContentResultMatchersTests.java
+11
-2
未找到文件。
build.gradle
浏览文件 @
9e520042
...
...
@@ -906,6 +906,7 @@ project("spring-test") {
optional
(
"org.aspectj:aspectjweaver:${aspectjVersion}"
)
optional
(
"org.hamcrest:hamcrest-core:1.3"
)
optional
(
"com.jayway.jsonpath:json-path:0.9.0"
)
optional
(
"org.skyscreamer:jsonassert:1.2.3"
)
optional
(
"xmlunit:xmlunit:1.5"
)
testCompile
(
project
(
":spring-context-support"
))
testCompile
(
project
(
":spring-oxm"
))
...
...
spring-test/src/main/java/org/springframework/test/util/JsonExpectationsHelper.java
0 → 100644
浏览文件 @
9e520042
/*
* Copyright 2002-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.springframework.test.util
;
import
org.skyscreamer.jsonassert.JSONAssert
;
/**
* A helper class for assertions on JSON content.
*
* <p>Use of this class requires the <a
* href="http://jsonassert.skyscreamer.org/">JSONassert<a/> library.
*
* @author Sebastien Deleuze
* @since 4.1
*/
public
class
JsonExpectationsHelper
{
/**
* Parse the expected and actual strings as JSON and assert the two
* are "similar" - i.e. they contain the same attribute-value pairs
* regardless of order and formatting.
*
* @param expected the expected JSON content
* @param actual the actual JSON content
* @since 4.1
*/
public
void
assertJsonEqual
(
String
expected
,
String
actual
)
throws
Exception
{
JSONAssert
.
assertEquals
(
expected
,
actual
,
false
);
}
/**
* Parse the expected and actual strings as JSON and assert the two
* are "not similar" - i.e. they contain different attribute-value pairs
* regardless of order and formatting.
*
* @param expected the expected JSON content
* @param actual the actual JSON content
* @since 4.1
*/
public
void
assertJsonNotEqual
(
String
expected
,
String
actual
)
throws
Exception
{
JSONAssert
.
assertNotEquals
(
expected
,
actual
,
false
);
}
}
spring-test/src/main/java/org/springframework/test/web/servlet/result/ContentResultMatchers.java
浏览文件 @
9e520042
/*
* Copyright 2002-201
3
the original author or authors.
* Copyright 2002-201
4
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -28,6 +28,7 @@ import javax.xml.transform.dom.DOMSource;
import
org.hamcrest.Matcher
;
import
org.springframework.http.MediaType
;
import
org.springframework.test.util.JsonExpectationsHelper
;
import
org.springframework.test.util.XmlExpectationsHelper
;
import
org.springframework.test.web.servlet.MvcResult
;
import
org.springframework.test.web.servlet.ResultMatcher
;
...
...
@@ -44,6 +45,8 @@ public class ContentResultMatchers {
private
final
XmlExpectationsHelper
xmlHelper
;
private
final
JsonExpectationsHelper
jsonHelper
;
/**
* Protected constructor.
...
...
@@ -51,6 +54,7 @@ public class ContentResultMatchers {
*/
protected
ContentResultMatchers
()
{
this
.
xmlHelper
=
new
XmlExpectationsHelper
();
this
.
jsonHelper
=
new
JsonExpectationsHelper
();
}
/**
...
...
@@ -210,4 +214,26 @@ public class ContentResultMatchers {
};
}
/**
* Parse the response content and the given string as JSON and assert the two
* are "similar" - i.e. they contain the same attribute-value pairs
* regardless of order and formatting.
*
* <p>Use of this matcher requires the <a
* href="http://jsonassert.skyscreamer.org/">JSONassert<a/> library.
*
* @param jsonContent the expected JSON content
* @since 4.1
*/
public
ResultMatcher
json
(
final
String
jsonContent
)
{
return
new
ResultMatcher
()
{
@Override
public
void
match
(
MvcResult
result
)
throws
Exception
{
String
content
=
result
.
getResponse
().
getContentAsString
();
jsonHelper
.
assertJsonEqual
(
jsonContent
,
content
);
}
};
}
}
spring-test/src/test/java/org/springframework/test/web/servlet/result/ContentResultMatchersTests.java
浏览文件 @
9e520042
/*
* Copyright 2002-201
2
the original author or authors.
* Copyright 2002-201
4
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -20,7 +20,6 @@ import org.hamcrest.Matchers;
import
org.junit.Test
;
import
org.springframework.mock.web.MockHttpServletResponse
;
import
org.springframework.test.web.servlet.StubMvcResult
;
import
org.springframework.test.web.servlet.result.ContentResultMatchers
;
/**
* @author Rossen Stoyanchev
...
...
@@ -78,6 +77,16 @@ public class ContentResultMatchersTests {
new
ContentResultMatchers
().
bytes
(
"bogus"
.
getBytes
()).
match
(
getStubMvcResult
());
}
@Test
public
void
json
()
throws
Exception
{
new
ContentResultMatchers
().
json
(
"{\n \"foo\" : \"bar\" \n}"
).
match
(
getStubMvcResult
());
}
@Test
(
expected
=
AssertionError
.
class
)
public
void
jsonNoMatch
()
throws
Exception
{
new
ContentResultMatchers
().
json
(
"{\n\"fooo\":\"bar\"\n}"
).
match
(
getStubMvcResult
());
}
private
static
final
String
CONTENT
=
"{\"foo\":\"bar\"}"
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录