JPAレイヤとデータベースとの間で統合テストを作成して、書いたSQLが正しいことを確認しています。実際のデータベースはOracleですが、残念なことに、私のテストのデータベースがDerbyでなければならないという理由から自然にいくつかの違いがあります。ダービーはregexp_like
をサポートしていないのでたとえば私のJPAクラスには、次のSQL文字列 JMockit Deencapsulation setField not persisting
private static final String QUERY = "Select * from Users where regexp_like(user_code, '^SS(B)?N')";
を持っている私は、オンザフライでSQLを変更するJMockits Deencapsulation.setField
を使用しています。例えば。
@Test
public void testMyDaoFind() {
new Expectations() {
{
Deencapsulation.setField(MyClass.class, "QUERY", "Select * from Users");
}
};
dao.findUsers();
}
、 Eclipselink/DerbyのSQL例外エラーが発生しました。regexp_likeが関数またはプロシージャとして認識されないという不具合があります。
私は結果のリストを取得しようとDAOでのライン上にブレークポイントを配置した場合、私は
JMockitが正しくクエリ
を置換していることを新しい時計から見ることができますgetResultListは()私はしかし、私はテストが、私はafformentioned例外を取得を通じて、すべての方法を実行してみましょう場合
を見て期待していたデータを返します!
非常に有益です! – PDStat