jMockit: как ожидать вызова конструктора для Mocked объектов? - PullRequest
5 голосов
/ 09 ноября 2011

Я тестирую юнит методом, выполняющим некоторые операции сериализации.Я намерен издеваться над логикой сериализации.Код выглядит следующим образом:

ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));

Я создал следующие фиктивные объекты:

@Mocked FileInputStream mockFIS;

@Mocked BufferedInputStream mockBIS;

@Mocked ObjectInputStream mockOIS;

Я настроил блок NonStrictExpectations(), в котором я хочу ожидать вышеуказанные вызовы конструктора.

Есть идеи, как мне этого добиться?

1 Ответ

10 голосов
/ 09 ноября 2011

Вы можете указать полный набор Ожиданий для данного набора взаимодействий. Из Поведенческого тестирования с JMockit :

Возможный тест для метода doSomething () может привести к где SomeCheckedException генерируется после произвольного числа успешных итераций. Предполагая, что мы хотим (по любым причинам) записать полный набор ожиданий для взаимодействия между эти два класса, мы могли бы написать тест ниже:

@Test
public void doSomethingHandlesSomeCheckedException() throws Exception
{
  new Expectations() {
     DependencyAbc abc;

     {
        new DependencyAbc(); // expect constructor

        abc.intReturningMethod(); result = 3;

        abc.stringReturningMethod();
        returns("str1", "str2");
        result = new SomeCheckedException();
     }
  };

  new UnitUnderTest().doSomething();
}
...