Easymock.expect выдает исключение IllegalStateException - PullRequest
0 голосов
/ 13 апреля 2020

Я вижу, что в этом фрагменте кода

expect(myService.getAll(anyBoolean())).andReturn(objectList).anyTimes();
replay(scopeService);

Это выражение оператора ожидаемого значения выдает IllegalStateException - missing behavior definition for the preceding method call: myService.getAll(true) Usage is: expect(a.foo()).andXXX()

Я понимаю, что если оно выдает это исключение, если у меня нет andReturn или если я пропустил вызов воспроизведения, или если мой объект не макет. Я проверил все это, и это не так! Может кто-нибудь, пожалуйста, дайте мне знать, если что-то еще может быть не так? У меня около 50 ожиданий / повторов, и ни у кого нет проблем.

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Вы не предоставили больше кода, поэтому я предполагаю, что ваш код выглядит примерно так:

import static org.easymock.EasyMock.*;

public class SomeTests {
    static class Foo {
        public List<Integer> getAll(boolean value) {
            throw new RuntimeException();
        }
    }

    public void someTestCase() {
        Foo mock = createMock(Foo.class);
        List<Integer> ret = Collections.singletonList(1);
        expect(mock.getAll(anyBoolean())).andStubReturn(ret);
        replay(mock);

        mock.getAll(true); // returns a list with single element 1 rather than throwing an exception
    }
}

Мой совет таков:

  1. Проверьте, если myService экземпляр создается одним из методов насмешки
  2. Ответ должен быть вызван на myService, так как он переключает режим макета
0 голосов
/ 13 апреля 2020

Я разобрался в проблеме. Проблема заключалась в том, что mock myService использовался для создания тестируемого объекта (поскольку он имеет его в качестве члена) и для создания другого фиктивного объекта, необходимого для тестов. Когда я изменил их на использование двух разных myService (myService, myService1), это сработало! Я не уверен, как это поможет, но это помогло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...