php - 如何在 Codeception 中编写可重用的方法/操作?
问题描述
我正在使用 Codeception 编写一组 API 测试,我希望在每个测试中使用的方法之一如下所示:
public function ActionWasNotDoneIfParamsAreMissing(ApiTester $I): void
{
$url = $this->serviceUrl;
$method = $this->method;
$dataCombination = $I->pcArrayPowerSet($this->data);
foreach ($dataCombination as $combination) {
$I->seeExceptionThrown(
BadRequestHttpException::class,
static function () use ($I, $url, $combination) {
$I->$method($url, $combination);
}
);
}
}
我确实在这里和这里阅读了文档,但我不太清楚如何在这种情况下实现可重用性。
我想知道是否有办法将其添加为 Helper 的一部分,以便可以在任何单个测试中重用它而无需重复代码。有什么想法和/或帮助吗?
解决方案
我在这里得到了答案。以下是我遵循的步骤:
StepObject
通过运行以下命令创建类:php vendor/bin/codecept generate:stepobject api CommonTest
调整方法如下:
public function checkIfHttpMethodIsNotAccepted( string $serviceUrl, array $notAllowedMethod = [], array $data = [] ): void { $I = $this; foreach ($notAllowedMethod as $method) { $I->seeExceptionThrown( BadRequestHttpException::class, static function () use ($I, $serviceUrl, $method, $data) { $I->$method($serviceUrl, $data); } ); } }
从测试类调用新方法:
public function ActionWasNotDoneIfHttpMethodIsNotAccepted(Step\Api\CommonTest $I): void { $I->checkIfHttpMethodIsNotAccepted( $this->serviceUrl, self::$notAllowedMethod, $this->data ); }
从现在开始,我只需要在我的测试课上做最后一个,不要在所有地方重复代码。希望它可以帮助某人!
注意:如果由于某种原因出现错误,请
php vendor/bin/codecept build
在运行任何测试套件之前运行该命令。
推荐阅读
- datetime - 如何为 Xamarin.Android AlarmManager 设置准确的时间
- php - 将每段的第一句改为
- windows - Kotlin native如何使用外部dll
- cookiecutter-django - Django Cookiecutter 在生产环境中使用环境变量模式
- c++ - 静态获取成员变量的偏移量
- javascript - 用于处理 javascript 中相当大的数组的函数式或命令式代码?
- c# - 通过将单元格值转换为字符串格式将 Excel 数据导入数据表
- amazon-web-services - 如何使用 Micronaut 在 Amazon Lambda 上创建 CRUD API
- shared-libraries - ldconfig -p 库缓存已禁用
- salt-stack - SaltStack:多个主机和几乎相同的 conf 文件。需要建议