Ожидания JMock - возможно ли проверить фактическое значение в ожидании? - PullRequest
0 голосов
/ 02 августа 2011

Я новичок в 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. Тест по-прежнему проходит такЯ просто хотел уточнить, действительно ли этот пример ожидает, что тип возвращаемого значения будет любым целым числом?Возможно ли это или вообще имеет смысл проверить, что он возвращает 10?

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Проблема в том, что вы не передаете экземпляр Class2 в экземпляр Class1, и нет способа связать два объекта вместе. JMock предназначен для тестирования взаимодействия объектов, поэтому должен быть способ настроить график объектов. Это может быть сеттер или через конструктор. В вашем случае, если Class2 действительно настолько прост, что он просто возвращает значение, то, возможно, не стоит использовать макет, а использовать реальный экземпляр.

Если вы используете макет, то, как говорится в другом посте, вам нужно использовать @RunWith (JMock.class) или assertIsSatisfied (), или попробовать новое правило насмешливого юнита, которое есть в контроле версий.

1 голос
/ 02 августа 2011

Добавьте

 context.assertIsSatisfied();

в конец теста.Это заставит JMock подтвердить все ожидания, которые вы определили.

...