Почему я не могу получить ценность, используя doReturn в Mockito - PullRequest
0 голосов
/ 29 февраля 2020

У меня был метод в сервисе mock,

def whenDynamoDBActionBlacklist(newlist: List[String]) = {
    doReturn(newlist).when(service).Blacklist
  }

, и я хочу проверить его с помощью

val list = mocks.whenDynamoDBActionBlacklist(List("333:avd"))

, но я не могу получить значение, получил исключение nullPointerException, могу кто-нибудь поможет мне с этим? Спасибо.

1 Ответ

0 голосов
/ 29 февраля 2020

Полагаю, вы путаете разницу между макетом setup и макетом выполнение . whenDynamoDBActionBlacklist на самом деле не возвращает значение, а просто указывает ответы для заглушенных методов. Рассмотрим следующий пример

import org.mockito.{ArgumentMatchersSugar, IdiomaticMockito}
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class MockitoScalaExampleSpec extends AnyFlatSpec with Matchers with IdiomaticMockito with ArgumentMatchersSugar {
  "MockitoScalaExample" should "demonstrated difference between mock setup and mock execution" in {

    // system under test
    trait MyService {
      def blacklist: List[String]
    }

    // initialise mock of the system under test
    val serviceMock = mock[MyService]

    // specify behaviour of the mock by defining how should stubbed methods respond
    serviceMock.blacklist returns List("mocked!")

    // actually execute the mocked system under test
    val result = serviceMock.blacklist

    // assert on the result
    result should be(List("mocked!"))
  }
}

Ключ к пониманию:

serviceMock.blacklist returns List("mocked!")

еще не возвращает List("mocked!"), но объявляет, что должно произойти, когда мы вызываем aMock.blacklist.

Обратите внимание, что в примере используется mockito- scala, но в ванильном Mockito .

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