2

我真的被这个验收测试困住了。

我的代码是这个

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

一切都过去了,直到出现“seeInDatabase”的那一行。日志给了我这个错误“警报:没有找到匹配的记录失败断言'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 时,一切正常。如何解决这个问题?(完整信息在这里

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 回答