Codeception seeInDatabase()对我不起作用

时间:2014-03-18 22:39:01

标签: laravel codeception

我真的坚持这次验收测试。

我的代码就是这个

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

一切都过去,直到带有“seeInDatabase”的行。 Log给出了这个错误“ALERT:找不到匹配的记录失败断言'0'大于0。”。

我检查了数据库设置

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');
}

同样,我无法验证这个新行。知道如何解决这个问题吗?

////更新/////

当我用香草PDO代码替换Eloquent Insert时,一切正常。如何解决这个问题? (完整信息here

2 个答案:

答案 0 :(得分:6)

我刚刚遇到同样的问题,显然我们已经看到了#34; seeRecord" Laravel4模块中可用的辅助方法来检查记录。像魅力一样。

$I->seeRecord('customers', ['afm' => '111']); 

答案 1 :(得分: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

最后,我已经解决了这个问题,虽然因为作曲家更新而不是理想的。