我正在为 Api 测试设置 Codeception。
我有一个 Cest 类,说...
class ZooCest {
public function addingALionToZoo(ApiTester $I)
{
$I->sendPost('zoo/add_animal', ['animal_id' => $animalId]);
}
}
问题是,我在哪里以及如何设置数据来测试我的 api。
按照前面的例子,我可以这样做:
class ZooCest {
public function addingALionToZoo(ApiTester $I)
{
$lion = new Animal('lion');
$lion->save();
$I->sendPost('zoo/add_animal', ['animal_id' => $lion->getId()]);
}
}
但是当业务逻辑复杂时,这会变得困惑。
我可以在支持文件夹中有一个分解器,所以我可以这样做:
class ZooCest {
public function addingALionToZoo(ApiTester $I)
{
$lion = DataFactory::create('lion');
$I->sendPost('zoo/add_animal', ['animal_id' => $lion->getId()]);
}
}
但是随着时间的流逝,它可能会增长很多,变得越来越复杂,达到我们甚至可能需要测试该逻辑的程度! (是的,这是个玩笑)
谢谢。
最佳答案
我认为没有一个“最佳位置”,因为这完全取决于您的项目和测试,所以这更像是一个理论上的答案。
如果您有(或可能有)那么多逻辑,我可能会专门为此类内容创建一个新目录,您可以在其中创建对您有意义的尽可能多的类。例如:
- app
- TestsData
- Zoo.php
- Oceanarium.php
- Theatre.php
- Shop.php
你可以更进一步,像这样划分它:
- app
- TestsData
- Zoo
- Lion.php
- Monkey.php
- Oceanarium
- Shark.php
无论哪种方式,您都可以在每个类中创建一些方法,以便将您想要的信息“植入”数据库(TestsData/Zoo/Lion.php 的演示)。
<?php
use Animal;
class Lion
{
public static function add() {
$lion = new Animal('lion');
$lion->save();
return $lion;
}
}
然后,在您的测试中使用:
class ZooCest {
public function addingALionToZoo(ApiTester $I)
{
$I->sendPost('zoo/add_animal', ['animal_id' => Lion::add()]);
}
}
关于php - 在何处以及如何为 Codeception Api 测试(Cests)设置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463655/