Mockito бросает UnfinishedStubbingException без видимой причины - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь написать "простой" модульный тест. Однако Mockito всегда сообщает мне, что существует UnfinishedStubbingException.

Строка кода, которую Mockito раскрывает как виновника, следующая:

when(myServiceIdFactory.get(any())).thenReturn((SortedSet<MyServiceId>) Set.of(emptyId));

Вот весь код модульного теста

@SpringBootTest
@RunWith(SpringRunner.class)
public class MyServiceIdProcessorTest {

  @Autowired
  private MyServiceIdProcessor myServiceIdProcessor;
  @MockBean
  private MyServiceIdFactory myServiceIdFactory;

  @Test
  public void shouldFilterProductsWithNoId() {
    Product productWithNoId = new Product();
    MyServiceId emptyId = new MyServiceId();
    when(myServiceIdFactory.get(any())).thenReturn((SortedSet<MyServiceId>) Set.of(emptyId));

    CatalogDTO catalogDTO = new CatalogDTO();
    Envelope<CatalogDTO, Product> envelopeToTest = Envelope.products(List.of(productWithNoId));

    Envelope returnedEnvelope = myServiceIdProcessor.enrichCatalog(envelopeToTest);

    assertThat(returnedEnvelope.getProducts()).hasSize(0);
  }
}

Ответы [ 2 ]

1 голос
/ 16 июля 2020

Проблема заключалась в следующем исключении приведения:

 when(myServiceIdFactory.get(any())).thenReturn((SortedSet<MyServiceId>) Set.of(emptyId));

Set.of(foo) не может быть преобразовано в SortedSet. Однако исключение, похоже, было проглочено и перезаписано Mockito

0 голосов
/ 14 июля 2020

Попробуйте spy() MyServiceIdFactory перед определением бахавуара

  @Test
  public void shouldFilterProductsWithNoId() {
    // Arrange
    Product productWithNoId = new Product();
    MyServiceId emptyId = new MyServiceId();
    MyServiceIdFactory spyMyServiceIdFactory = spy(myServiceIdFactory);
    SortedSet<MyServiceId> set = (SortedSet<MyServiceId>) Set.of(emptyId);
    doReturn(set).when(spyMyServiceIdFactory).get(any());

    CatalogDTO catalogDTO = new CatalogDTO();
    Envelope<CatalogDTO, Product> envelopeToTest = Envelope.products(List.of(productWithNoId));

    // Act
    Envelope returnedEnvelope = spyMyServiceIdFactory.enrichCatalog(envelopeToTest);

    // Assert
    assertThat(returnedEnvelope.getProducts()).hasSize(0);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...