2011-04-18 68 views
0

我的代码结构的功能是象下面这样:模拟与一个回调函数作为参数

class A { 
    def a(x:() => Unit) { do something} 
} 

class B { 
    .... 
    def foo() { 
    def x() { something } 
    a(x) 
    } 
} 

现在我想用一个模拟A.做单元测试B级的

val a = mock[A] 
def x() { ... } 
a.a(x) atLeastOnce 

以上没有按没有工作。由于这个新的x不是foo()中的x。但是foo里面的x是本地的,不适合单元测试。除了将x移出foo以外的任何建议?

+0

我也想测试B. A是外部类依赖于DB - 意味着我必须嘲笑一个在单元测试。由于A.a需要一个回调函数作为它的参数,我写了x()。 – user398384 2011-04-19 02:54:39

+0

听起来好像你想表达的那样:'A.a'被调用至少一次,但你不关心在调用中使用的参数。我不知道EasyMock,但嘲笑框架通常用'a.a(any)atLeastOnce'等表达这样的期望。如果你关心关闭(例如,你想验证它有一个特定的副作用),你可以捕获实际的参数并调用它(以伪造'A'的角色)。 – 2011-04-19 03:03:07

回答

相关问题