gpt4 book ai didi

phpunit - phpunit 中的可重用测试

转载 作者:行者123 更新时间:2023-12-02 04:45:16 26 4
gpt4 key购买 nike

假设我要测试三种状态下的数据库一致性:

  1. 插入数据后 - 我想确保已将一定数量的行插入到数据库表中。

  2. 当数据更新后-我想重复行数量测试(数量必须与插入后相同)

  3. 删除数据时 - 我想确保所有数据都已删除。

此外,当我插入或更新时,一些文件(图像)可以上传到服务器,文件路径将存储在数据库中。所以我还想检查文件数量是否与数据库文件表中的行数量相对应。

换句话说,我想在插入和更新后重用两种方法:testRowsAmountOnAddUpdatetestFilesAmountOnAddUpdate

组织代码的最佳方式是什么?我应该使用固定装置吗?

最佳答案

正如一些评论所说,只要有可能,最好模拟数据库入口层,但有时您只需要测试代码和数据库之间的交互,尤其是对于复杂的查询。我个人将它用于数据库固定装置和断言:(呃,免责声明,我也记下了这个所以我有偏见)

https://github.com/malteriesch/test-db-acle

它允许以管道分隔的表格格式插入数据,同时将默认值插入任何非空列,然后检查数据库的状态。

$this->setupTables("
[address]
address_id |company
1 |me
3 |you

[user]
user_id |name
10 |John
20 |Mary

");
// excercise the SUT, e.g.
$this->addressService->addEntry("them");

$this->assertTableStateContains("
[address]
address_id |company
1 |me
3 |you
100 |them #this is the new row inserted

[user]
user_id |name
10 |John
20 |Mary
");
}

也许您可以将它们包装在 testRowsAmountOnAddUpdatetestFilesAmountOnAddUpdate 中,对于文件上传,我会读取该字段的值,然后断言那里指定的文件存在。

请注意,DBUnit 也是一种不错的方式,我个人喜欢尽可能简单和简洁地编写测试,并且只专注于实际更改/与测试相关的信息。其他固定装置对我来说只是有点冗长。

关于phpunit - phpunit 中的可重用测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33624537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com