在Grails中测试RESTful服务的方法是什么?
我对Grails并不陌生,但我对它也不是很熟悉。我边走边学。我注意到的一点是,尽管Grails提供了对TDD/BDD的内置支持,但它缺乏关于TDD/BDD的重要文档。特别是,官方指南的其余部分没有说明如何测试RESTful服务 我目前正在尝试使用使用创建的函数测试来测试我的代码。由于我在尝试通过GORM方法访问数据源时遇到了在Grails中测试RESTful服务的方法是什么?,rest,grails,plugins,tdd,bdd,Rest,Grails,Plugins,Tdd,Bdd,我对Grails并不陌生,但我对它也不是很熟悉。我边走边学。我注意到的一点是,尽管Grails提供了对TDD/BDD的内置支持,但它缺乏关于TDD/BDD的重要文档。特别是,官方指南的其余部分没有说明如何测试RESTful服务 我目前正在尝试使用使用创建的函数测试来测试我的代码。由于我在尝试通过GORM方法访问数据源时遇到了IllegalStateException,并且将@Mock添加到域类中并没有改变任何东西,因此我必须寻找解决方法。从我的网络搜索中,我发现可以用它。然而,在使用插件运行代码
IllegalStateException
,并且将@Mock
添加到域类中并没有改变任何东西,因此我必须寻找解决方法。从我的网络搜索中,我发现可以用它。然而,在使用插件运行代码时,我再次遇到了InvalidClassException
所以我的测试逻辑是这样的
POST
请求以创建记录RemoteControlPlugin
组件的示例代码
为此我得到了
| Failure: testCreatePosition(PositionFunctionalTests)
| groovyx.remote.client.RemoteException: An exception was raised in the remote application
at groovyx.remote.client.RemoteControl.processResult(RemoteControl.groovy:129)
at groovyx.remote.client.RemoteControl.exec(RemoteControl.groovy:73)
at groovyx.remote.client.RemoteControl.exec(RemoteControl.groovy:67)
at groovyx.remote.client.RemoteControl.call(RemoteControl.groovy:81)
at PositionFunctionalTests.testCreatePosition(PositionFunctionalTests.groovy:21)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:255)
at junit.framework.TestSuite.run(TestSuite.java:250)
Caused by: java.io.InvalidClassException: PositionFunctionalTests$_testCreatePosition_closure1; local class incompatible: stream classdesc serialVersionUID = 9199922008348880909, local class serialVersionUID = -8935356421602488910
at groovyx.remote.server.CommandInvoker.instantiate(CommandInvoker.groovy:61)
at groovyx.remote.server.CommandInvoker.invokeAgainst(CommandInvoker.groovy:37)
at groovyx.remote.server.CommandChainInvoker.invokeAgainst(CommandChainInvoker.groovy:37)
at groovyx.remote.server.Receiver.invokeCommandChain(Receiver.groovy:129)
at groovyx.remote.server.Receiver.execute(Receiver.groovy:125)
at groovyx.remote.transport.http.RemoteControlServlet.doExecute(RemoteControlServlet.groovy:74)
at grails.plugin.remotecontrol.RemoteControlServlet.doExecute(RemoteControlServlet.groovy:30)
at groovyx.remote.transport.http.RemoteControlServlet.doPost(RemoteControlServlet.groovy:39)
我也有这个错误,下面是我的一个域类的外观:
class Friend extends User implements Serializable {
private static final long serialVersionUID = 5127248463279511859L
我相信我使用了IDE来生成long。有关解释,请参阅
此外,我在非分叉模式下运行功能测试。这可能会影响远程控制插件。我之前没想到
grails.project.fork = [
test: false,
我推荐功能测试使用。几个月来,我一直在使用它和远程控制插件。这个版本非常好,支持也非常出色。您使用的是什么版本的Grails?正如我所说,我在
远程控制插件
.2.3.x和2.4.0上遇到了问题。这适用于我:def remote=new RemoteControl();def user=remote{user.get(1)}我使用的是2.3.9。我不知道为什么会出现InvalidClassException
说“本地类不兼容”。我不记得看到过那个错误,但我从2.3.7升级到了2.4.0。你在使用最新的遥控插件吗?它是不久前更新的。您是如何为Groovy类生成serialVersionUID
的?我使用的是Eclipse,但如果我在Groovy类上工作,它不会警告我。我在使用Intellij时,没有必要使用Eclipse。我只是发明了一个,并尝试一下。我尝试使用1234567作为UID,但仍然得到相同的错误。我认为这还不够长。试试我上面例子中的一个。考虑到1L通常就足够了,我认为这不会改变任何事情。。。
grails.project.fork = [
test: false,