首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何告诉Mockito模拟对象在下次调用时返回一些不同的内容?

如何告诉Mockito模拟对象在下次调用时返回一些不同的内容?
EN

Stack Overflow用户
提问于 2010-11-18 23:37:57
回答 3查看 237.2K关注 0票数 244

因此,我在类级别上创建了一个模拟对象作为静态变量,如下所示...在一个测试中,我希望Foo.someMethod()返回某个值,而在另一个测试中,我希望它返回一个不同的值。我遇到的问题是,我似乎需要重新构建mock,才能让它正常工作。我希望避免重新构建mock,只在每次测试中使用相同的对象。

代码语言:javascript
复制
class TestClass {

    private static Foo mockFoo;

    @BeforeClass
    public static void setUp() {
        mockFoo = mock(Foo.class);
    }

    @Test
    public void test1() {
        when(mockFoo.someMethod()).thenReturn(0);

        TestObject testObj = new TestObject(mockFoo);

        testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value

    }

    @Test
    public void test2() {
        when(mockFoo.someMethod()).thenReturn(1);

        TestObject testObj = new TestObject(mockFoo);

        testObj.bar(); // calls mockFoo.someMethod(), STILL receiving 0 as the value, instead of expected 1.

    }

}

在第二个测试中,当调用testObj.bar()时,我仍然收到0作为值...解决这个问题的最佳方法是什么?请注意,我知道我可以在每个测试中使用不同的Foo模拟,但是,我必须链接mockFoo的多个请求,这意味着我必须在每个测试中进行链接。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4216569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档