Hi, ich habe einen Spring Boot Test, der folgendermaßen aussieht:
Ich möchte bei meinen Assertions sicherstellen, dass der expectedBot mit dem result body übereinstimmt. Mein Problem ist, dass ich folgenden Fehler erhalte:
Die Werte in expectedBot und result body stimmen überein, allerdings sieht das für mich so aus, als ob jedes Optional eine id hat, welche dann nicht übereinstimmt, weil es ja nicht genau das selbe Optional ist. Ich könnte jetzt natürlich auf alle Werte einzeln zugreifen und somit überprüfen, ob diese übereinstimmen, aber das ist halt nicht so schön, wie ich finde. Gibt es eine Möglichkeit besser zu lösen?
Java:
@Test
void buyStock_WhenBotOptionalIsPresent_ThenSaveEditedBotAndNewStockAndReturnStock() {
//arrange
Bot givenBot = Bot.builder()
.id(1L)
.algorithms(List.of(Algorithms.MACD))
.name("Test")
.moneyLeftToInvest(BigDecimal.valueOf(1000))
.build();
Stock boughtStock = Stock.builder()
.stockType(StockType.BTCUSDT)
.amount(BigDecimal.valueOf(100))
.build();
Bot expectedBot = Bot.builder()
.id(1L)
.algorithms(List.of(Algorithms.MACD))
.name("Test")
.moneyLeftToInvest(BigDecimal.valueOf(100))
.stocks(List.of(boughtStock))
.build();
BotBuyingRequest botBuyingRequest = new BotBuyingRequest();
botBuyingRequest.setStockType(boughtStock.getStockType());
botBuyingRequest.setAmount(boughtStock.getAmount());
Mockito.when(botRepository.findById(anyLong())).thenReturn(Optional.of(givenBot));
//act
ResponseEntity<Optional<Bot>> result = botService.buyStock(1L, botBuyingRequest);
//assert
Assertions.assertEquals(HttpStatus.OK, result.getStatusCode());
Assertions.assertEquals(expectedBot, result.getBody().get());
}
Ich möchte bei meinen Assertions sicherstellen, dass der expectedBot mit dem result body übereinstimmt. Mein Problem ist, dass ich folgenden Fehler erhalte:
Code:
org.opentest4j.AssertionFailedError:
Expected :Optional[com.forecast.nlm.entity.bot.Bot@24facb47]
Actual :Optional[com.forecast.nlm.entity.bot.Bot@6020cd42]
Die Werte in expectedBot und result body stimmen überein, allerdings sieht das für mich so aus, als ob jedes Optional eine id hat, welche dann nicht übereinstimmt, weil es ja nicht genau das selbe Optional ist. Ich könnte jetzt natürlich auf alle Werte einzeln zugreifen und somit überprüfen, ob diese übereinstimmen, aber das ist halt nicht so schön, wie ich finde. Gibt es eine Möglichkeit besser zu lösen?