在Groovy测试用例中没有这样的属性

时间:2014-04-15 00:21:37

标签: unit-testing groovy

我有一个Groovy测试类MsgDispatcherTest extends GroovyTestCase 在这个课程中有以下测试用例:

@Test
void test_register()
{
    def d = MsgDispatcher.instance    // MsgDispatcher is a singelton
    def cb1Called = 0
    def cb1 = { cb1Called++; void }

    d.registerCallback("msg1", cb1)   // closure cb1 should be registered
}

MsgDispatcher.registerCallback的界面如下所示:

void registerCallback(String message, Closure callback)
{
    assert callback && message
    // ...
}

现在,当我运行此测试用例时,我在调用d.registerCallback("msg1", cb1)时收到以下错误消息:

groovy.lang.MissingPropertyException:没有这样的属性:msg1 for class:ecs.MsgDispatcherTest

我在这里缺少什么想法?

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题。我的registerCallback()方法存在错误。问题是我尝试访问callback参数作为地图(callback[message]),这当然不起作用。

没关系,我明白为什么这是一个问题。但是,为什么Groovy编译器错误消息如此神秘?它指的是registerCallback()中不存在问题的行,而是指我称之为该函数的行。