Как я могу установить ожидания jmockit для цепочки вызовов, используя время? - PullRequest
0 голосов
/ 30 мая 2018

Я тестирую экземпляр класса с именем server и использую частичное моделирование, например:

new Expectations(server) {{
    server.readPortNumber(withInstanceOf(File.class));
    result = new FileNotFoundException();
    times = 300;
}}

Это отлично работает для первых 300 вызовов.Однако вызов 301 должен быть успешным, поэтому я ожидал, что что-то подобное сработает:

new Expectations(server) {{
    server.readPortNumber(withInstanceOf(File.class));
    result = new FileNotFoundException();
    times = 300;
    result = 100;
    times = 1;
}}

Но это не так.readPortNumber возвращает 100 при первом вызове, показывая, что значения были переопределены.

Как указать цепочку результатов, используя ключевое слово times?

1 Ответ

0 голосов
/ 30 мая 2018

Мне удалось найти ответ, используя Delegate:

new Expectations(server) {{
    server.readPortNumber(withInstanceOf(File.class));
    result = new FileNotFoundException();
    times = 301;
    result = new Delegate() {
        int n_calls = 0;

        int delegate() throws FileNotFoundException {
            n_calls++;
            if (n_calls <= 300) {
                throw new FileNotFoundException();
            } else {
                return 100;
            }
        }
    };
}}

Не уверен, что есть лучшее решение, менее подробное, чем это.

...