当我使用多个模拟时间时会发生什么?

蒂莫
public class TestClass {
    @Mock
    private SomeObject someObject;

    @InjectMocks
    private SubjectOfTesting subject;

    @Before
    public void setupMock() {
         when(someObject.doSomething(eq("Meh")).thenReturn("Boing");
         when(someObject.doSomething(eq("Foo")).thenReturn("Bar");
         when(someObject.doSomething(any()).thenReturn("?!"); // <-- This any()
    }

    @Test
    public void testSomethings() {
        subject.setArgument("Meh");
        String result = subject.useSomeObject();
        assertEquals("result is not equal", "Boing", result);
    }

    // Multiple tests with other arguments.
}

给定上面的类,我可以同时使用any()和其他类吗?它将执行如我所料,在返回"Boing"或者"Bar"还是"?!"取决于我在我的测试提供了论据?

编辑

测试了:

@RunWith(MockitoJUnitRunner.class)
public class TempTest {

    @Mock
    private SomeObject someObject;

    @InjectMocks
    private Subject subject = new Subject();

    @Before
    public void setupMock() {
        when(someObject.doSomething(eq("Meh"))).thenReturn("Boing");
        when(someObject.doSomething(eq("Foo"))).thenReturn("Bar");
        when(someObject.doSomething(any())).thenReturn("?!"); // <-- This any()
    }

    @Test
    public void testSomethingsMeh() {
        subject.setArgument("Meh");
        String result = subject.useSomeObject();
        assertEquals("result is not equal", "Boing", result);
    }

    @Test
    public void testSomethingsFoo() {
        subject.setArgument("Foo");
        String result = subject.useSomeObject();
        assertEquals("result is not equal", "Bar", result);
    }

    @Test
    public void testSomethingsAny() {
        subject.setArgument("Any");
        String result = subject.useSomeObject();
        assertEquals("result is not equal", "?!", result);
    }

    private interface SomeObject {
        String doSomething(String argument);
    }

    private class Subject {
        private SomeObject someObject;
        private String argument;

        public Subject() {
        }

        public void setSomeObject(final SomeObject someObject) {
            this.someObject = someObject;
        }

        public String useSomeObject() {
            return this.someObject.doSomething(this.argument);
        }

        public void setArgument(final String argument) {
            this.argument = argument;
        }
    }
}

结果(两次失败,另一次失败):

org.junit.ComparisonFailure: result is not equal expected:<[Bar]> but was:<[?!]>
org.junit.ComparisonFailure: result is not equal expected:<[Boing]> but was:<[?!]>

有没有办法使这些测试通过?

塞尔吉·比希尔(Sergii Bishyr)

最后一个when将覆盖所有以前的状态。但是,如果更改存根的顺序,则可以实现所需的结果。这将按您期望的那样工作。

when(someObject.doSomething(any()).thenReturn("?!"); 
when(someObject.doSomething(eq("Meh")).thenReturn("Boing");
when(someObject.doSomething(eq("Foo")).thenReturn("Bar");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我在Bash脚本中对函数使用`&`时会发生什么?

来自分类Dev

MySql-当我用“ and”更新时会发生什么

来自分类Dev

当我放弃对iOS 6的支持时会发生什么?

来自分类Dev

当我包装两次I / O流时会发生什么?

来自分类Dev

当我混合使用有符号和无符号类型时会发生什么?

来自分类Dev

在C ++中,当我对-128,127范围以外的整数使用static_cast <char>时会发生什么?

来自分类Dev

就system_read中断,汇编而言,当我按Enter键时会发生什么?

来自分类Dev

当我绑定到AliasProperty时会发生什么?

来自分类Dev

当我多次调用requestAnimationFrame时会发生什么

来自分类Dev

当我调用“ BufferStrategy.show()”时会发生什么?

来自分类Dev

当我们在Android Studio中添加DEPENDENCY时会发生什么

来自分类Dev

当我从RAM运行持久性存储实时USB时会发生什么情况?

来自分类Dev

当我在同一指针中两次使用malloc()时会发生什么?

来自分类Dev

当我在抽象方法上使用call_user_func()时会发生什么?

来自分类Dev

当我放弃对iOS 6的支持时会发生什么?

来自分类Dev

当我截断正在使用的文件时会发生什么?

来自分类Dev

当我将%esp移至%ebp时会发生什么?

来自分类Dev

当我尝试使用进程ID小于-1的kill时会发生什么?

来自分类Dev

当我不输入期望的命令时会发生什么?

来自分类Dev

时间结束时会发生什么?

来自分类Dev

当我使用“ nmap google.com”命令时会发生什么?

来自分类Dev

当我在C ++中对类使用vector时会发生什么

来自分类Dev

当我忘记登录TTY时会发生什么?

来自分类Dev

当我使用“ dd”覆盖运行Ubuntu的磁盘时会发生什么?

来自分类Dev

当我使用多个模拟时间时会发生什么?

来自分类Dev

当我调用“ BufferStrategy.show()”时会发生什么?

来自分类Dev

当我在先前定义的通过ajax调用的函数中使用相同的变量名时会发生什么?

来自分类Dev

当我将 System.Threading.Timer 与 TimerTrigger 一起使用时会发生什么?

来自分类Dev

当我取消订阅 Observable 链时会发生什么?

Related 相关文章

  1. 1

    当我在Bash脚本中对函数使用`&`时会发生什么?

  2. 2

    MySql-当我用“ and”更新时会发生什么

  3. 3

    当我放弃对iOS 6的支持时会发生什么?

  4. 4

    当我包装两次I / O流时会发生什么?

  5. 5

    当我混合使用有符号和无符号类型时会发生什么?

  6. 6

    在C ++中,当我对-128,127范围以外的整数使用static_cast <char>时会发生什么?

  7. 7

    就system_read中断,汇编而言,当我按Enter键时会发生什么?

  8. 8

    当我绑定到AliasProperty时会发生什么?

  9. 9

    当我多次调用requestAnimationFrame时会发生什么

  10. 10

    当我调用“ BufferStrategy.show()”时会发生什么?

  11. 11

    当我们在Android Studio中添加DEPENDENCY时会发生什么

  12. 12

    当我从RAM运行持久性存储实时USB时会发生什么情况?

  13. 13

    当我在同一指针中两次使用malloc()时会发生什么?

  14. 14

    当我在抽象方法上使用call_user_func()时会发生什么?

  15. 15

    当我放弃对iOS 6的支持时会发生什么?

  16. 16

    当我截断正在使用的文件时会发生什么?

  17. 17

    当我将%esp移至%ebp时会发生什么?

  18. 18

    当我尝试使用进程ID小于-1的kill时会发生什么?

  19. 19

    当我不输入期望的命令时会发生什么?

  20. 20

    时间结束时会发生什么?

  21. 21

    当我使用“ nmap google.com”命令时会发生什么?

  22. 22

    当我在C ++中对类使用vector时会发生什么

  23. 23

    当我忘记登录TTY时会发生什么?

  24. 24

    当我使用“ dd”覆盖运行Ubuntu的磁盘时会发生什么?

  25. 25

    当我使用多个模拟时间时会发生什么?

  26. 26

    当我调用“ BufferStrategy.show()”时会发生什么?

  27. 27

    当我在先前定义的通过ajax调用的函数中使用相同的变量名时会发生什么?

  28. 28

    当我将 System.Threading.Timer 与 TimerTrigger 一起使用时会发生什么?

  29. 29

    当我取消订阅 Observable 链时会发生什么?

热门标签

归档