2016-07-01 17 views
0

私はアプリケーションデータベースとしてMySQLを使用していますが、テストインメモリデータベースとしてHSQLを使用しています。今の問題は、私は以下のようなSQL selectQueryを持っている。)(HSQLとMySQLの相違

SELECT date(a.created_at) as record_date 
FROM table a 

、日付()は、日付に日時を変換するためのMYSQLでの関数であるが、HSQLで同じ機能がTO_DATEです。今、上記のクエリをデータベースにヒットさせ、出力を取得する方法があります。テスト環境は、HSQL DBを使用しているよう

public Response dbQueryThroughJdbcTemplate(String selectQuery){ 
     jdbcTemplate.query(selectQuery, RowMapper); //RowMapper maps output to Response 
    } 

は今、私は、

@Test 
public void testDbQueryThroughJdbcTemplate(){ 
     Response response = dbQueryThroughJdbcTemplate(selectQuery); 
     TestCase.assertEquals(expected, response); // avoided the code for making expected object 
} 

をこのメソッドをテストするためのテスト方法を持って、テストは、日付の方法が利用できないというエラーがスローされます。

この問題を解決するにはどうすればいいですか?

+0

何のテストの両方でサポートされている選択肢を試すことができますか? HSQLが動作するので、それをテストする必要はありません。使用したクエリメカニズムとは独立した適切な結果を試してください。クエリを完全に変更する必要があるという問題がある場合は、そうしないでください。 MySQLを使用するか、データベース呼び出しを疑似します。 – Gimby

+0

@ジンビー、もっと明確にするために質問を更新しました – greperror

+0

私が言ったように、あなたは間違ったことをテストしています。 MySQLの日付関数とHSQLの日付関数が動作するので、それをテストする必要はありません。テストする必要があるのは、アプリケーションがクエリの結果にどのように応答するのか、そしてそれを嘲笑してデータベースをテストから外すことです。 – Gimby

答えて

1

あなたはHSQLDBとMySQL

SELECT CAST(a.created_at AS DATE) as record_date FROM table a