Codeception 调用未定义的方法 assertEquals

问题描述

我正处于 Codeception 冒险的开始。 我在分配 assertEquals() 方法时遇到了问题,即使我声明了它 use PHPUnit\Framework\Assert;

代码测试:

<?PHP declare(strict_types=1);
namespace Product\TestApi;
use Product\ApiTester;
use Codeception\Util\HttpCode;
use PHPUnit\Framework\Assert;
public function CreateProduct(ApiTester $I)
    {
        $I->sendPost('/api/product/');
        $I->seeResponseCodeIs(HttpCode::CREATED);

        $responsePost = $I->grabDataFromresponseByJsonPath('$..product');
        $I-$this->assertEquals(4,strlen((string)$responsePost));

        $I->seeResponseContainsJson(
            [
                'category' => 'main','product' => 'fish',]
        );
    }
}

我收到一个错误

api/CreateProductCest.PHP:createProduct
                                                                                              
  [Error] Call to undefined method Product\TestApi\CreateProductCest::assertEquals()  
                                                                                              

Scenario Steps:

 3. $I->grabDataFromresponseByJsonPath("$..product") at api/CreateProductCest.PHP:42
 2. $I->seeResponseCodeIs(201) at api/CreateProductCest.PHP:41
 1. $I->sendPost("/api/product/") at api/CreateProductCest.PHP:40

#1  /product-service/modules/Product/tests/api/CreateProductCest.PHP:43
#2  Product\TestApi\CreateProductCest->createProduct
Artifacts:

Body: {"id":3,"product":"fish","category":"main"}

解决方法

$this->assertEquals 在 Cest 格式中不可用,您必须在套件配置文件中启用 Asserts 模块,然后使用 $I->assertEquals

api.suite.yaml:

actor: ApiTester
modules:
    enabled:
        - Asserts
        - REST:
            depends: PhpBrowser

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...