0

pg-promiseテーブルの削除とテーブルの再作成を伴ういくつかのテストに取り組んでいます。

ローカル マシンですべてのテストに合格します。しかし ではtravis-ci、すべてのDROP TABLE ...SQL をスキップしているようで、結果としてテストが失敗します。

誰でも理由がわかりますか?許可の問題ですか?

travis-cipostgres サーバーに接続するなど、これをさらにデバッグする方法はありますか?

更新:すべてのテストがローカル環境でパスするため、コードを配置しなかったため、それは単なる問題だと思いましたtravis-citraivs-ci以下は、スキップしていると思われるビットです。

  afterEach('cleanup tables', (done) => {
    db.none('DROP TABLE $1~', 'syncTest')
    .then(done)
    .catch(() => done());
  });

  beforeEach('cleanup tables', (done) => {
    db.none('DROP TABLE $1~', 'syncTest')
    .then(done)
    .catch(() => done());
  });

Update2:さらにいくつかのテストを行った結果、テストが失敗したのはそれが原因であることが判明しました。

db.one('SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name=$1)', [tableName])

期待値を返していませんでした。クエリは{ '?column?': false }travis で返されますが{ exists: false }、ローカル環境で返されます。

これはtravis-ci問題ですか?またはpostgresのバージョンの問題?

4

1 に答える 1

1

ほとんどの場合、テスト シーケンスが間違っているためです。競合状態が発生する可能性があります。これは、テストの実行時にローカル マシンよりもかなりビジーであるため、Travis Ci でのみ発生します。

まず、 を に置き換えてみてDROP TABLE nameくださいDROP TABLE IF EXISTS name

そして、あなたは使ってみることができますCREATE TABLE IF NOT EXISTS name...

于 2016-12-02T11:57:44.580 に答える