2016-11-09 14 views
1

Я хочу, чтобы нестатический метод объекта, возвращаемого статическим заводским методом, возвращал определенный результат.powermockito static и non static method chain

После того, как я выполнил эту настройку, мой тестовый код будет опознавать ConnectionFactory.getConn («ABC») косвенно через другой фрагмент кода, который тестируется.

PowerMockito.when (ConnectionFactory.getConn ("ABC"). GetCurrentStatus()). ThenReturn (ConnectionStatus.CONNECTED);

Я получаю NPE для вышеуказанного утверждения.

  • У меня уже есть @PrepareForTest ({FXAllConnectionFactory.class, ConnectionStatus.class}) в начале моего тестового JUnit класса.

Каким будет правильный способ?

Заранее спасибо :)

ответ

0

Я предполагаю нет нет смысла создавать свободно/прикован вызов для вашего тест установки.

Вы видите:

PowerMockito.when(ConnectionFactory.getConn("ABC").getCurrentStatus()).thenReturn(ConnectionStatus.CONNECTED); 

, вероятно, предназначен для настройки два вызовов:

  1. ConnectionFactory.getConn("ABC"), а затем
  2. getCurrentStatus() на результат этого первого вызова

И что s вы думаете, что PowerMockito волшебным образом знает , что должен быть возвращен этим первым звонком getConn()?

Другими словами:

  1. Сначала обеспечивают высмеивал объекта соединения X; и сконфигурируйте ваши mocks так, чтобы getConn() вернул этот объект
  2. В дополнение к этому вам нужно настроить X, чтобы вернуть нужное значение при вызове getCurrentStatus() ... на X!

Итак, ответ на самом деле: то, что вы хотите сделать, невозможно. Идея такова; Вы определяете поведение, такие как:

when A.foo() is called; then return some X 

Там нет волшебной силы внутри PowerMockito превратить

when A.foo().bar() is called thren return Y 

в

when A.foo() is called, return X; when X.bar() is called return Y 

Вы должны указать, что шаг за шагом.

+0

ConnectionFactory.getConn ("ABC") уже установлен и вернет объект correctType. – ali90

+0

Тогда вы можете показать ** все ** свой код. Если ваш код будет делать то, что вы ожидаете от него, вас не будет здесь, не так ли? – GhostCat

 Смежные вопросы

  • Нет связанных вопросов^_^