小编Tom*_*ato的帖子

Grails shell不会重新编译已更改的文件

我是grails的新手,遇到了grails shell的问题,即使显示有关它的消息,也不会重新编译我的类.这是我正在做的事情:

  1. 我有一个grails 2.0.0应用程序,它具有某些静态方法的类
  2. 我想测试一下grails shell中的一些功能,所以我继续从grails项目文件夹中启动它 grails shell
  3. 我正在调用类的静态方法来执行一些工作,如下所示:

    import com.mypackage.*
    MyClass.doWork()
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果我看到一些意外的行为或运行时错误,我会相应地修改源代码并且grails shell显示它实际上正在看到更改: |Compiling 2 source files.

  5. 然后我运行该方法,但似乎该方法是相同的,因为它给了我相同的错误,即使我确定我已经保存了groovy文件.
  6. 所以,我必须exit再次启动它.然后grails接受了这些变化.

我做错了什么?这似乎是相当奇怪的预期行为......

shell grails groovy static-methods recompile

6
推荐指数
1
解决办法
1229
查看次数

覆盖grails集成测试中的服务方法

我正在尝试测试控制器在集成测试中的操作.这是一个简单的场景,我正在尝试测试的操作是调用服务的方法.我试图使用元类覆盖该方法,但看起来它不起作用,即服务的实际方法总是被调用而不是我使用元类重写的那个.我在这做错了什么?

这是控制器的方法:

class MyController {
  MyService myService

  def methodA() {
    def u = myService.find(params.paramA)
    render view: "profile", model:  [viewed: u]
  }
Run Code Online (Sandbox Code Playgroud)

以下是我实现集成测试的方法:

class MyControllerTests extends GroovyTestCase {

 MyController controller

 void testMethodA() {
    controller = new MyController()

    // Mock the service
    MyService mockService = new MyService()
    mockService.getMetaClass().find = { String s ->
      []
    }

    controller = new MyController()
    controller.myService = myService

    controller.methodA()
  }
Run Code Online (Sandbox Code Playgroud)

PS我在STS 2.9.2中使用grails 2.0.0

testing grails groovy integration-testing metaprogramming

3
推荐指数
1
解决办法
4856
查看次数

Grails ajax功能

我是Grails的新手,今天正在学习使用Ajax(原型)加强Grails的教程.该教程是Grails应用程序的简单引用,该应用程序将异步获取数据库中的随机引用.我花了将近3个小时的时间来工作,最终让它以奇怪的结果工作.基本上,除非我将以下两行放到视图的gsp和布局的gsp中,否则ajax将无法工作:

<g:javascript library="prototype" />
<r:layoutResources />
Run Code Online (Sandbox Code Playgroud)

我试图把上面的行放到任何一行,但那不行.它必须在两个地方.这是Grails的预期行为吗?

ajax grails groovy prototype gsp

2
推荐指数
1
解决办法
2211
查看次数