我使用Yii2并遵循REST指南编写了一个API 。我的API正在运行,我想为其编写一些测试,因此我再次遵循了有关如何运行测试和使单元测试正常工作的指南。然后,我环顾了有关测试WebServices的Codeception文档,并使其正常工作。
我的问题是API调用未使用我的测试数据库。我有两个数据库,一个叫db
和其他testdb
。这是我的config.php
档案tests/codeception/config/
:
return [
'components' => [
'db' => [
'dsn' => 'mysql:host=localhost;port=8889;dbname=testdb;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock',
],
'mailer' => [
'useFileTransport' => true,
],
'urlManager' => [
'showScriptName' => true,
],
],
];
我编写了一个简单的测试,该测试将GET请求发送到端点以检索数据。我的测试数据库为空,因此我希望收到一个空响应,但我却得到了其他数据库的内容。
然后,我尝试按照此处的“环境常数”部分中的说明设置YII_ENV
为test
,以便可以针对env变量进行测试并相应地更改配置。我试图在文件夹中的文件中设置此变量:YII_ENV_TEST
db
_bootstrap.php
tests/codeception/
defined('YII_ENV') or define('YII_ENV', 'test');
然后,我YII_ENV
在web/index.php
文件中记录了的值(index-test.php
未调用,可能也是一个问题),并且它是未定义的。
我究竟做错了什么?我尝试将Yii2
模块包含在api.suite.yml
文件中,但是如果我这样做,请求将不再具有返回代码,它将返回N/A
。还有另一种方法可以更改Yii应该使用的数据库吗?
好吧,我通过使用另一个应用程序模板找到了一个“解决方案”:https : //github.com/githubjeka/yii2-rest
文件组织可以更好地满足我的需求,并且我可以轻松配置要使用的数据库。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句