1

何度も呼び出されるオブジェクト メソッドをモックしたいのですが、毎回結果が異なるはずです。

ここで私がやろうとしていること:

fooMock.demand.someMethod(3..3) { ->
    //call1
    if (**some condition**)
        return 1

    //call2
    if (**some condition**)
        return 2

    //call3
    if (**some condition**)
        return 3
}

では、現在の請求番号を知る方法はありますか? それとももっと良いものを提供していますか?

Grails 2.3-M2 ( http://jira.grails.org/browse/GRAILS-4611 )でそれを行うことは可能ですが、それまでは誰かが回避策を持っていましたか?

4

2 に答える 2

3

テストで属性を作成して、次のことを制御できます。

class MyTest {
  int someMethodCount

  @Before
  void setup() {
    fooMock.demand.someMethod(3..3) { ->
      someMethodCount++
      ...
    }
  }

}
于 2013-05-25T16:12:11.807 に答える
0

厳密なモッキングを気にせず、単体テストのみを行う場合someMethodは、マップを使用する基本的な方法論を使用できます。

void testSomething() {
    def mockUtil = ["someMethod" : {param->
        //I have used param only to handle conditional logics
        //param can be optional
        if(param == 1)return "John"
        if(param == 2)return "Nancy"
        if(param == 3)return "Mark"
    }]

    assert mockUtil.someMethod(1) == "John"
    assert mockUtil.someMethod(2) == "Nancy"
    assert mockUtil.someMethod(3) == "Mark"
}
于 2013-05-25T16:28:19.100 に答える