我刚刚抓住了functional testing plugin的最新版本,至少从文档来看,它的重点已经发生了一些变化。这不是一件坏事。 HtmlUnit集成很好。但是现在,关于REST服务的RESTful测试的文档中没有任何内容。但是,我以前用functionaltestplugin.FunctionalTestCase
做的事情仍然有用,这很好。
例如:
void testCertifyEmployerCertifierNotFound() {
post('/employerCertification/certifyEmployer') {
headers['Content-Type'] = 'application/json'
body {
"""
{
'employerName': 'ACME',
'certifierExteralId': '1234556',
'certifyingUserId': '123445'
}
"""
}
}
assertStatus 200
assertContentType "application/json"
def model = this.response.contentAsString
def map = JSON.parse(model)
assertFalse(map.success)
assertNotNull(map.errorCode)
assertTrue(map.errorCode == EmployerCertificationService.ERROR_RESPONSE.CERTIFIER_NOT_FOUND.toString())
}
这个插件仍然是"事实"用于功能性Web服务测试的插件,我的上述方法仍然有效吗?
答案 0 :(得分:3)
如果您的目标正在测试REST请求/响应,我建议您使用rest client builder plugin。您不需要复杂的浏览器模拟插件。安装后只需两步即可使用它:
添加事件以管理 scripts / _Events.groovy 中的功能测试:这是一个系统grail文件,用于在运行时挂钩某些事件。只需复制并粘贴此代码段即可:
eventAllTestsStart = {
if (getBinding().variables.containsKey("functionalTests")) {
functionalTests << "functional"
}
}
现在您可以在 test / functional 文件夹中创建功能测试,记住使用Spec结束文件名,如果您忘记了,grails将找不到任何测试。 这是一个例子:
import grails.plugins.rest.client.RestBuilder
import spock.lang.Specification
class AuthenticationSpec extends Specification {
String baseUrl = "http://localhost:8080/grouply-backend"
void "test login wrong credentials"() {
given:
RestBuilder restBuilder = new RestBuilder()
when: "sending wrong credential"
def response = restBuilder.post("${baseUrl}/auth/login") {
json {
username = 'foo'
password = 'bar'
}
}
then: "authentication http error should happen"
response.status == 401
}
}
使用$ grails test-app functional:
答案 1 :(得分:0)
我刚才想同时使用functional testing plugin和webtest plugin几乎电流的Grails 2.4.2,我感到非常难过,报告说,他们都borked。 :(
功能测试插件现在已经被放弃了至少9个月。 2013年12月,我们报告了使用此插件无法正常工作编写所有测试的critical bug。直到我写这篇文章的那天,插件开发人员都没有回应。作为这个开发人员,Marc Palmer switched to iOS development and consultancy in August 2014我不相信这个bug会被解决。
Webtest插件上次更新超过3年,它“需要Grails 1.2.RC2 +”。我遇到了运行它时遗漏webtest.jar的丑陋错误,看起来这个插件还没有更新到当前的Grails版本。它的语法也不像Groovy那样不好看。
幸运的是Geb integration for Grails plugin应该适用于当前的Grails版本。 :)事实上,仅与Grails 2.3.1+一起使用,截至2014年6月,这些单词的最后一次更新已经更新为Grails 2.4.3。example tests project已更新为Grails 2.4.3 ,几天前已经发布,所以它是最新的。但是我还没有使用过这个项目。另外看一下示例代码我不确定它是RESTful API测试的最佳选择 - 它更像是一个GUI Web应用程序测试工具..
答案 2 :(得分:0)
虽然可能不是非常“grails风格”,但我想应该可以使用spring上下文启动整个堆栈并使用apache HttpClient运行集成休息测试。