我真的坚持这次验收测试。
我的代码就是这个
$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)
答案 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
最后,我已经解决了这个问题,虽然因为作曲家更新而不是理想的。