在codeception中使用StepObjects,报错信息:[ErrorException] Undefined variable: scenario
Using StepObjects in codeception, error message: [ErrorException] Undefined variable: scenario
我正在使用 codeception 和 laravel4 来测试我的 API。
我有一组函数需要在不同的测试中多次使用。
我正在尝试使用 StepObjects 来执行此操作。
基于 this link 中的示例
这是我的代码:
_steps文件夹中的代码
namespace ApiTester;
class generalSteps extends \ApiTester {
public function json_format( $path = "/users/me", $desc = "TEST") {
$I = $this;
$I->wantTo($desc);
$I->amBearerAuthenticated(\LoginCest::$token);
$I->sendPOST($path);
$I->seeResponseJsonMatchesJsonPath('$.content.data');
} }
我的_bootstrap.php文件:
\Codeception\Util\Autoload::registerSuffix('Steps',
__DIR__.DIRECTORY_SEPARATOR.'_steps');
这就是我尝试在 API 文件夹下的函数中访问它的方式:
public function correct_json_format(ApiTester $I) {
$I= new \ApiTester\generalSteps($scenario);
$I->json_format(self::$path, "Testing the Json format for view my profile");
}
当我 运行 ./vendor/bin/codecept 运行 api -vvv
我得到的错误是:Undefined variable: scenario,
这是由这行代码引起的:
$I= new \ApiTester\generalSteps($scenario);
这是我得到的完整错误:
[ErrorException] Undefined variable: scenario
0 /Applications/MAMP/htdocs/larave-codeception/vendor/phpunit/phpunit/src/Framework/TestCase.php(693):
PHPUnit_Framework_TestResult->run(Object(Codeception\TestCase\Cest))
1 /Applications/MAMP/htdocs/larave-codeception/vendor/phpunit/phpunit/src/Framework/TestSuite.php(716):
PHPUnit_Framework_TestCase->run(Object(PHPUnit_Framework_TestResult))
2 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/PHPUnit/Runner.php(100):
PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult))
3 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/SuiteManager.php(153):
Codeception\PHPUnit\Runner->doEnhancedRun(Object(PHPUnit_Framework_TestSuite),
Object(PHPUnit_Framework_TestResult), Array)
4 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/Codecept.php(166):
Codeception\SuiteManager->run(Object(Codeception\PHPUnit\Runner),
Object(PHPUnit_Framework_TestResult), Array)
5 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/Codecept.php(149):
Codeception\Codecept->runSuite(Array, 'api', NULL)
6 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/Command/Run.php(262):
Codeception\Codecept->run('api')
7 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/Command/Run.php(191):
Codeception\Command\Run->runSuites(Array, Array)
8 /Applications/MAMP/htdocs/larave-codeception/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253):
Codeception\Command\Run->execute(Object(Symfony\Component\Console\Input\ArgvInput),
Object(Symfony\Component\Console\Output\ConsoleOutput))
9 /Applications/MAMP/htdocs/larave-codeception/vendor/symfony/console/Symfony/Component/Console/Application.php(889):
Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput),
Object(Symfony\Component\Console\Output\ConsoleOutput))
10 /Applications/MAMP/htdocs/larave-codeception/vendor/symfony/console/Symfony/Component/Console/Application.php(193):
Symfony\Component\Console\Application->doRunCommand(Object(Codeception\Command\Run),
Object(Symfony\Component\Console\Input\ArgvInput),
Object(Symfony\Component\Console\Output\ConsoleOutput))
11 /Applications/MAMP/htdocs/larave-codeception/vendor/symfony/console/Symfony/Component/Console/Application.php(124):
Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput),
Object(Symfony\Component\Console\Output\ConsoleOutput))
12 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/codecept(27):
Symfony\Component\Console\Application->run()
您需要 $scenario 变量。如果您在 CEST 的函数调用中添加第二个参数,您就可以获得它。如果您将它们添加到参数列表中,它会自动提供给您的测试方法。
public function correct_json_format(ApiTester $I, $scenario) {
$I= new \ApiTester\generalSteps($scenario);
$I->json_format(self::$path, "Testing the Json format for view my profile");
}
我正在使用 codeception 和 laravel4 来测试我的 API。 我有一组函数需要在不同的测试中多次使用。 我正在尝试使用 StepObjects 来执行此操作。 基于 this link 中的示例 这是我的代码: _steps文件夹中的代码
namespace ApiTester;
class generalSteps extends \ApiTester {
public function json_format( $path = "/users/me", $desc = "TEST") {
$I = $this;
$I->wantTo($desc);
$I->amBearerAuthenticated(\LoginCest::$token);
$I->sendPOST($path);
$I->seeResponseJsonMatchesJsonPath('$.content.data');
} }
我的_bootstrap.php文件:
\Codeception\Util\Autoload::registerSuffix('Steps',
__DIR__.DIRECTORY_SEPARATOR.'_steps');
这就是我尝试在 API 文件夹下的函数中访问它的方式:
public function correct_json_format(ApiTester $I) {
$I= new \ApiTester\generalSteps($scenario);
$I->json_format(self::$path, "Testing the Json format for view my profile");
}
当我 运行 ./vendor/bin/codecept 运行 api -vvv 我得到的错误是:Undefined variable: scenario, 这是由这行代码引起的:
$I= new \ApiTester\generalSteps($scenario);
这是我得到的完整错误:
[ErrorException] Undefined variable: scenario
0 /Applications/MAMP/htdocs/larave-codeception/vendor/phpunit/phpunit/src/Framework/TestCase.php(693):
PHPUnit_Framework_TestResult->run(Object(Codeception\TestCase\Cest))
1 /Applications/MAMP/htdocs/larave-codeception/vendor/phpunit/phpunit/src/Framework/TestSuite.php(716):
PHPUnit_Framework_TestCase->run(Object(PHPUnit_Framework_TestResult))
2 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/PHPUnit/Runner.php(100):
PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult))
3 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/SuiteManager.php(153):
Codeception\PHPUnit\Runner->doEnhancedRun(Object(PHPUnit_Framework_TestSuite), Object(PHPUnit_Framework_TestResult), Array)
4 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/Codecept.php(166):
Codeception\SuiteManager->run(Object(Codeception\PHPUnit\Runner), Object(PHPUnit_Framework_TestResult), Array)
5 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/Codecept.php(149):
Codeception\Codecept->runSuite(Array, 'api', NULL)
6 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/Command/Run.php(262):
Codeception\Codecept->run('api')
7 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/src/Codeception/Command/Run.php(191):
Codeception\Command\Run->runSuites(Array, Array)
8 /Applications/MAMP/htdocs/larave-codeception/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253):
Codeception\Command\Run->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
9 /Applications/MAMP/htdocs/larave-codeception/vendor/symfony/console/Symfony/Component/Console/Application.php(889):
Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
10 /Applications/MAMP/htdocs/larave-codeception/vendor/symfony/console/Symfony/Component/Console/Application.php(193):
Symfony\Component\Console\Application->doRunCommand(Object(Codeception\Command\Run), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
11 /Applications/MAMP/htdocs/larave-codeception/vendor/symfony/console/Symfony/Component/Console/Application.php(124):
Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
12 /Applications/MAMP/htdocs/larave-codeception/vendor/codeception/codeception/codecept(27):
Symfony\Component\Console\Application->run()
您需要 $scenario 变量。如果您在 CEST 的函数调用中添加第二个参数,您就可以获得它。如果您将它们添加到参数列表中,它会自动提供给您的测试方法。
public function correct_json_format(ApiTester $I, $scenario) {
$I= new \ApiTester\generalSteps($scenario);
$I->json_format(self::$path, "Testing the Json format for view my profile");
}