【发布时间】:2016-10-09 06:43:24
【问题描述】:
我正在将一些 JUnit 测试重写为 Spock,以利用数据驱动的测试风格。
我正在为如何提供动态验证而苦苦挣扎。
这是我目前所拥有的:
def "domestic rules"(from, to, oneWay, check) {
expect:
String mealResponse = getMealResponse(new BookingOptions.BookingOptionsBuilder().setFrom(from).setTo(to).setOneWay(oneWay).build());
check(mealResponse)
where:
from | to | oneWay || check
'MNL' | 'PEK' | true || assertNoMeals()
}
def assertNoMeals = {
assert JsonAssert.with(it)
.assertThat('$.links', hasSize(1))
.assertThat('$.links[0].rel', is("http://localhost:9001/api/docs/rels/ink/meal-allocations"))
.assertThat('$.links[0].uri', startsWith("http://localhost:9001/api/tenants/acme/meals/allocations/"));
}
不幸的是,我在第一行数据的行收到了 NullPointerException。
我猜那是因为当时正在运行闭包,而不是刚刚声明。
有没有办法更好地做到这一点?
【问题讨论】:
-
您应该阅读Spock Primer。你做错了断言。