我可以在代码中结合单元和验收测试吗?

时间:2018-05-25 16:59:22

标签: codeception

我正在运行一个代码测试,测试表单的前端提交。我可以通过简单的验收测试来做到这一点:

class ContactCest {
    public function testContactForm(AcceptanceTester $I) {
    }
}

但现在我想检查数据库以确保已保存有关提交的正确数据。在单元测试中,我可以调用$I->assertEquals($expected, $found),但这似乎在AcceptanceTester类中不可用。如果我把测试变成单元测试类,那么其他一切都会失败。

有没有办法在这个类中执行assertEquals()或其他断言?

我发现AcceptanceTester是一个由代码构建的文件,它放在我的测试目录中并使用了这个特性:

use _generated\AcceptanceTesterActions;

我尝试添加额外的特性:

use _generated\UnitTesterActions;

但我失败了:

[RuntimeException] Action 'assertNotNull' can't be called

1 个答案:

答案 0 :(得分:2)

您可以在acceptance.suite.yml配置中启用模块,在验收测试中使用Asserts module中的功能。

但在您的情况下,您只需使用$I->seeInDatabase()即可。 您必须启用数据库模块并设置数据库连接:

modules: 
    enabled: 
        - Asserts
        - DB: 
            dsn: 'mysql:host=localhost;dbname=testdb'
         user: 'root'
         password: ''
         dump: 'tests/_data/dump.sql'
         populate: true
         cleanup: true
         reconnect: true

参见文档: https://codeception.com/docs/modules/Db