1

編集: 'retrieve.name == "name1"' を 'retrieve.name.equals("name1")' に置き換えました。

EDIT2: @BeforeClass と @AfterClass を追加しました (クレジット: http://digitalsanctum.com/2012/06/01/play-framework-2-tutorial-ebean-orm/ )。

Play Web アプリの JUnit テストを書いていますが、奇妙な理由でデータベース エントリを変更できないようです。問題を説明する最も簡単な例を次に示します。

@BeforeClass
public static void setup() throws IOException {
    app = Helpers.fakeApplication(Helpers.inMemoryDatabase());
    Helpers.start(app);

    server = Ebean.getServer("default");

    ServerConfig config = new ServerConfig();
    config.setDebugSql(true);

    ddl = new DdlGenerator((SpiEbeanServer) server, new H2Platform(), config);

    // drop
    String dropScript = ddl.generateDropDdl();
    ddl.runScript(false, dropScript);

    // create
    String createScript = ddl.generateCreateDdl();
    ddl.runScript(false, createScript);
}

@AfterClass
public static void stopApp() {
    // drop
    String dropScript = ddl.generateDropDdl();
    ddl.runScript(false, dropScript);

    Helpers.stop(app);
}

@Test
public void UserModify(){
    // create user (User extends Model)
    User user = new User();
    user.id = (long) 1;
    user.name = "name1";
    user.save();

    // modify
    user.name = "name2";
    user.update();
    user.save();

    // look-up
    User retrieve = User.find.byId((long) 1);
    assertFalse("Old name", retrieve.name.equals("name1"));
}

言うまでもなく、これは合格するはずですが、そうではありません...「update()」を使用してデータベースフィールドを変更できることは知っています。プロジェクトの他の誰かが、そのように使用すると機能すると言っているからです。

Play フレームワークのドキュメント: http://www.playframework.com/documentation/2.1.1/Home

このテストが失敗する理由はありますか?

4

2 に答える 2