EasyMock: предоставление аргументов Вы не знаете во время компиляции

Используя последнюю версию EasyMock, у меня есть метод, который я должен погасить. Метод берет параметр объекта и возвращается пусто.

Заблокированный метод называет метод, который я тестирую. Никакие неожиданности там. Моя трудность состоит в том, что объект, который предоставляется как аргумент дразнившему методу, создается методом, который я тестирую.

Я знаю, что могу обойти это использование createNiceMock() но есть ли способ явно погасить этот метод?

Пример кода:

public interface IMockMe { 
    void doSomething(InnerObj obj);
}

public class TestMe {
    IMockMe mockMe; 

    public void testThisMethod() {
        InnerObj obj = new InnerObj();
        mockMe.doSomething(obj);
    }
}

class Tester {
    @Test
    public void testThatDarnedMethod() {
        IMockMe mocked = EasyMock.create(IMockMe.class);

        mocked.doSomething( /* what goes here? */);
        EasyMock.expectLastCall();

        TestMe testMe = new TestMe(mocked);
        testMe.testThisMethod();

    }
}
6
задан roufamatic 27 January 2010 в 16:30
поделиться

1 ответ

Взгляните на раздел "Гибкие ожидания с аргументальными матчами" документации EasyMock . Пример из документации:

String[] documents = new String[] { "Document 1", "Document 2" };
expect(mock.voteForRemovals(aryEq(documents))).andReturn(42);

aryEq(documents)aryEq(documents) - это вызов, создающий матчер, который будет сопоставлять любой массив с нужным содержимым, а не с идентификатором.

В вашем случае вам может понадобиться anyObject() matcher.

5
ответ дан 17 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: