为什么在Mockito.when创建内部调用了该方法?

huangapple go评论104阅读模式
英文:

Why method is invoked inside Mockito.when creation?

问题

以下是您要翻译的内容:

方法 DefaultMessageListenerContainer.isRunning() 被调用在 Mockito.doReturn(..).when() 声明中。为什么?

  1. @Test
  2. public void isRunning_validParams_isOk() {
  3. DefaultMessageListenerContainer mockMessageListenerContainer = Mockito.mock(DefaultMessageListenerContainer.class);
  4. List<DefaultMessageListenerContainer> internalState = Arrays.asList();
  5. Whitebox.setInternalState(this.theService, "jmsListeners", internalState);
  6. try {
  7. Mockito
  8. .doReturn(true)
  9. .doReturn(false)
  10. .when(mockMessageListenerContainer.isRunning());
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. Assert.fail("unexpected exception");
  14. }
  15. internalState.add(mockMessageListenerContainer);
  16. boolean result1 = this.theService.isRunning();
  17. Assert.assertTrue(result1);
  18. boolean result2 = this.theService.isRunning();
  19. Assert.assertFalse(result2);
  20. }
英文:

The method DefaultMessageListenerContainer.isRunning() is called in the Mockito.doReturn(..).when() declaration. Why?

  1. @Test
  2. public void isRunning_validParams_isOk() {
  3. DefaultMessageListenerContainer mockMessageListenerContainer = Mockito.mock(DefaultMessageListenerContainer.class);
  4. List&lt;DefaultMessageListenerContainer&gt; internalState = Arrays.asList();
  5. Whitebox.setInternalState(this.theService, &quot;jmsListeners&quot;, internalState);
  6. try {
  7. Mockito
  8. .doReturn(true)
  9. .doReturn(false)
  10. .when(mockMessageListenerContainer.isRunning());
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. Assert.fail(&quot;unexpected exception&quot;);
  14. }
  15. internalState.add(mockMessageListenerContainer);
  16. boolean result1 = this.theService.isRunning();
  17. Assert.assertTrue(result1);
  18. boolean result2 = this.theService.isRunning();
  19. Assert.assertFalse(result2);
  20. }

答案1

得分: 1

  1. 你的代码应该更改为:

.doReturn(false)
.when(mockMessageListenerContainer).isRunning();

  1. ---
  2. 在使用 `doReturn` 时,`when` 方法期望一个模拟对象,更多信息请参考[文档](https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#doReturn-java.lang.Object-)
英文:

your code should be changed to:

  1. .doReturn(false)
  2. .when(mockMessageListenerContainer).isRunning();

When using doReturn, the when method expects a mock object, more info in the documentation

答案2

得分: 0

问题可能与“isRunning”方法被声明为final有关。

英文:

The problem might be related to the fact that the "isRunning" method is declared as final

huangapple
  • 本文由 发表于 2020年9月23日 16:34:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/64024033.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定