2

私はこの受け入れテストに本当に行き詰まっています。

私のコードはこれです

$I->click('Submit');
$I->see('Client Added');
$I->seeInDatabase('customers',[
    'afm'=>'111'
    ]);

「seeInDatabase」のある行まですべてが通過します。ログには、「ALERT: No matching records found Failed asserting that '0' is greater than .」というエラーが表示されます。

データベースの設定を確認しました

modules:
    config:
        Db:
            dsn: 'mysql:host=localhost;dbname=dbtesting'
            user: 'test'
            password: 'test'
            dump: app/tests/_data/dump.sql
            populate: true
            cleanup: true

私には問題ないようです。そこにあることがわかっている行を使用して、seeInDatabase() で再確認しました。問題なく動作しています。(PDOの問題やそのようなものではありません)

そのため、フォームの「POST」の後にコントローラーで作成を強制しました

public function store(){

\Customer::create(['afm'=>111]);

return \Redirect::route('customers.index')->with('successMsg',Client Added');
}

繰り返しますが、この新しい行を確認できませんでした。これを解決する方法はありますか?

//// アップデート /////

Eloquent Insert をバニラの PDO コードに置き換えると、すべて問題ありません。これを修正する方法は?(完全な情報はこちら)

4

2 に答える 2

6

私はちょうど同じ問題にぶつかりました.Laravel4モジュールでレコードをチェックするために「seeRecord」ヘルパーメソッドを利用できるようです. 魅力のように機能します。

$I->seeRecord('customers', ['afm' => '111']); 
于 2014-08-08T16:11:53.073 に答える
0

ドキュメントによると

cleanup: true - すべてのデータベース クエリがトランザクションで実行され、テストの最後にロールバックされます。

したがって、通常、このようなものが機能するはずです(functional.suite.yml)

class_name: TestGuy
modules:
    enabled: [Filesystem, TestHelper, Laravel4, Db]
    config:
        Laravel4:
            cleanup:false

しかし、私の場合は何も解決しませんでした。/Module/Laravel4.php の 59 行目を変更して強制的に

cleanup = true

TO

cleanup  = false

そして最後に、この問題を修正しましたが、作曲家の更新により理想的ではありません.

于 2014-07-23T17:01:16.523 に答える