JMock期望 - 是否有可能检查预期的实际价值?

时间:2011-08-02 17:47:03

标签: jmock hamcrest

我是Java和JMock的新手,我现在正试图让我的头脑嘲笑。我用虚拟类创建了这个虚拟测试:

public class JmockUnitTest {
    private Mockery context = new Mockery();

    private Class2 class2 = context.mock(Class2.class);

    @Test
    public void testMethod() {

        Class1 class1 = new Class1();

        context.checking(new Expectations() {{
            oneOf(class2).method2();
            will(returnValue(1234));
        }});

        class1.method1();
    }


public class Class1 {

    public void method1() {
        Class2 class2 = new Class2Impl();
        Integer time = class2.method2();
    }
}

public interface Class2 {
    public Integer method2();
}

public class Class2Impl implements Class2 {
    public Integer method2() {
        return 10;
    }
}

}

我的Class2Impl.method2()返回整数10,但期望值设置为1234.测试仍然通过,所以我只是想澄清一下这个例子jus期望返回类型是任何整数?是否有可能或甚至有意义检查它是否返回10?

由于

2 个答案:

答案 0 :(得分:2)

问题是你没有将Class2的实例传递给Class1的实例,没有办法将两个对象绑定在一起。 JMock旨在测试对象如何协作,因此必须有一种方法来设置对象图。这可能是一个setter或通过构造函数。在你的情况下,如果Class2真的如此简单以至于它只返回一个值,那么使用mock就可能不值得使用实例。

如果你确实使用了mock,那么正如另一篇文章所说,你需要使用@RunWith(JMock.class)或assertIsSatisfied(),或者尝试版本控制中新的mockry junit规则。

答案 1 :(得分:1)

添加

 context.assertIsSatisfied();

到测试结束。这将使JMock确认满足您定义的所有期望。