0

对于场景单元测试用户输入密码和密码确认。当我尝试验证在不同on()块中调用的相同方法时,我在第二个块中收到以下错误on()

org.mockito.exceptions.verification.TooManyActualInvocations: 
activationPasswordView.disableButton();
Wanted 1 time:
But was twice

这是代码:

 given("user set password "){

        on(“password is null”){
         presenterImpl.validatePassword(null, null)

            it("done button should be disabled"){
                verify(view).disableButton()
            }
        }

        on("input only one password"){
          presenterImpl.validatePassword("Password", "")

            it("done button should be disabled"){
                verify(view).disableButton()
            }
        }
    }

但如果我调用不同的方法,它可以正常工作。我认为这不是 Spek 框架的用途,因为我看到的所有示例总是使用 Assert。有没有办法我可以在 Spek 中编写以下条件而不会出现错误?即使是不同的given()仍然会导致错误。

4

1 回答 1

0

模拟对象计算为特定模拟调用函数的次数。由于您没有在每次测试之间重置模拟,因此每次调用该方法时都会增加计数器。

您应该使用:reset(view) 重置模拟计数器。此问题与 Spek 框架无关。

于 2019-05-07T14:04:42.897 回答