Skip to content
aadrian edited this page Nov 13, 2017 · 3 revisions

MockSqlManager

Mirage-SQL provides MockSqlManager for unit testing of classes which use SqlManager.

Using MockSqlManager instead of SqlManager, you can execute a your code which uses SqlManager without a database. You can configure results of MockSqlManager and verify executed SQLs using MirageTestContext.

An example of TestCase which uses MockSqlManager is below:

@Test
public void testGetBookById(){
  // set MockSqlManager to the test target
  BookService bookService = new BookService();
  bookService.setSqlManager(new MockSqlManager());

  // configure results which would be returned by MockSqlManager.
  Book book = new Book();
  book.setBookName("Mirage in Action");

  MirageTestContext.addResult(book);

  // execute
  Book result = bookService.getBookById(new Long(100));

  // assert returned object
  assertEquals("Mirage in Action", book.getName);

  // verify the number of executed SQL
  MirageTestContext.verifySqlCount(1);

  // verify the executed SQL
  MirageTestContext.verifySql(0,
    "SELECT ID, BOOK_NAME, AUTHOR, PUBLISHER, PRICE, PUBLISH_DATE " +
    "FROM BOOK WHERE ID = ? ORDER BY ID ASC", // verify SQL
    new Long(100)); // verify Parameters
}

If returned values has been not configured, MockSqlManager returns following values as a result.

  • empty list for SqlManager#getResultList()
  • null for SqlManager#getSingleResult()
  • 1 for SqlManager#insertEntity(), SqlManager#updateEntity(), SqlManager#deleteEntity()
Clone this wiki locally