首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元测试mockito存储库返回空

单元测试mockito存储库返回空
EN

Stack Overflow用户
提问于 2022-08-16 17:49:10
回答 1查看 70关注 0票数 0

我正在测试dynamodb存储库。下面是测试的方法

代码语言:javascript
复制
public Book getBook(final String bookId) {
    DynamoDbTable<Book> bookTable = getTable();
    Key key = Key.builder().partitionValue(bookId)
        .build();
    return bookTable.getItem(key);
  }

  private DynamoDbTable<Book> getTable() {
    return dynamoDbEnhancedClient.table("Book",
        TableSchema.fromBean(Book.class));
  }

这是测试类

代码语言:javascript
复制
@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
class BookRepositoryTest {

  @Mock
  private DynamoDbEnhancedClient dynamoDbEnhancedClient;
  @Mock
  private DynamoDbTable<Book> dyamoDbTable;
  @Mock
  private Key key;

  @InjectMocks
  private BookRepository repository;

  private final String BOOK_ID = "123";
  private static MockedStatic<TableSchema> tableSchema;

  @BeforeAll
  public static void init() {
    tableSchema = mockStatic(TableSchema.class);
  }

  @AfterAll
  public static void close() {
    tableSchema.close();
  }

  @Test
  void testGetBook() {
    Book book = HelperMethod.createBook();
    tableSchema.when(() -> TableSchema.fromBean(Book.class))
        .thenReturn(BeanTableSchema.create(Book.class));
    when(dynamoDbEnhancedClient.table("Book",
        TableSchema.fromBean(Book.class))).thenReturn(dyamoDbTable);
    when(dyamoDbTable.getItem(key)).thenReturn(book);
    final var result = repository.getBook(BOOK_ID);
    assertEquals(book, result);
  }

}

这是错误

org.opentest4j.AssertionFailedError:预期:Book(bookId=123,keyCode=testKeyCode,eventTimestampMs=123,value=true)实数:null

EN

回答 1

Stack Overflow用户

发布于 2022-08-16 18:04:45

您从未模仿过dyamoDbTable (它似乎拼写错误),所以它是null。而且,我不明白你为什么要嘲笑TableSchema.fromBean;看起来你可以这么做

代码语言:javascript
复制
when(dynamoDbEnhancedClient.table(anyString(), any())).thenReturn(dyamoDbTable)

如果你那样做了,你就不需要mockStatic了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73378219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档