我使用CakePHP3并将生产数据库(my_app)复制到测试数据库(test_my_app)中。 app.php中列出了测试连接的详细信息,debug设置为true。
我是否需要使用灯具或我的控制器是否会测试拾取测试数据库?在我发布到控制器(REST API)的那一刻,它似乎适用于生产数据库,而不是测试数据库。该应用程序正在http://localhost/my_app/上运行,这是控制器测试中使用的URL。
我在控制台上运行测试:
$ vendor/bin/phpunit tests/TestCase/Controller/ArticlesControllerTest
这仍处于开发阶段,因此数据库很小。
这是代码:
public function testAdd()
{
$users = TableRegistry::get('Users');
$query = $users->find('all');
$before = $query->count();
$params = [
'username' => 'foo',
'email' => 'foobar@example.com ',
'password' => 'password',
'fullname' => 'Elbart Bart',
'status' => 'active'
];
$this->configRequest([
'headers' => [
'Authorization' => 'Bearer ' . $this->token
]
]);
$this->post('users/add', $params);
$query2 = $users->find('all');
$after= $query2->count();
debug($before);
$this->assertEquals($after,$before+1);
}
答案 0 :(得分:1)
是的,您可以使用测试数据库进行测试,根本不需要灯具。我将my_app数据库复制到test_my_app中,并且CakePHP测试约定能够获取它。
另外,请确保不使用绝对/完整URL,然后使用生产数据库 -
// so DON'T do this
$this->post('http://localhost/my_app/users/add', $data).
//Instead do:
$this->post('/users/add', $data);