And*_*erj 7 sqlite phpunit doctrine functional-testing symfony
我按照站点使用一次性数据库教程测试Symfony应用程序.我在我的测试用例中添加了Fixtures,并且在SetUp期间没有出现错误.如果我在灯具中添加一个错误(例如,将一个nullable = false字段留空),则会显示错误,因此该代码肯定会被执行.
我的配置:
doctrine:
dbal:
default_connection: memory
connections:
memory:
driver: pdo_sqlite
memory: true
charset: UTF8
Run Code Online (Sandbox Code Playgroud)
我的WebTestCase中的SetUp:
protected function setUp() {
parent::setUp();
self::bootKernel();
DatabasePrimer::prime(self::$kernel);
$this->loadFixtures([
'AppBundle\DataFixtures\ORM\UserData',
'AppBundle\DataFixtures\ORM\ArtistData'
]);
}
Run Code Online (Sandbox Code Playgroud)
然而,在我的WebTestCase中,似乎没有表存在.输出抛出一个Doctrine异常,说我的表不存在.
SQLSTATE[HY000]: General error: 1 no such table: my_user_table
Run Code Online (Sandbox Code Playgroud)
如果我在文件中切换到sql_lite,一切正常,没有任何其他更改:
dbal:
default_connection: file
connections:
file:
driver: pdo_sqlite
path: %kernel.cache_dir%/test.db
charset: UTF8
Run Code Online (Sandbox Code Playgroud)
任何人都有成功的说教程或使用sqlite内存数据库进行单元测试,并有任何提示或想法?
更新: 我将我的安装程序更改为此以确保内核不会在其间关闭.它没有帮助:
parent::setUp();
$this->client = $this->getClient();
MemoryDbPrimer::prime(self::$kernel);
$this->loadFixtures([
'AppBundle\DataFixtures\ORM\UserData',
'AppBundle\DataFixtures\ORM\ArtistData'
]);
Run Code Online (Sandbox Code Playgroud)
当你
$client->request(<METHOD>, <URL>);
Run Code Online (Sandbox Code Playgroud)
其中调用
Symfony\Bundle\FrameworkBundleClient::doRequest($request)
Run Code Online (Sandbox Code Playgroud)
请求后,内核默认关闭,您的内存数据库将被丢弃。
如果你打电话
client->disableReboot();
Run Code Online (Sandbox Code Playgroud)
在测试的 setup() 函数中,此行为被禁用,您可以运行整个套件。
我假设您调用createClient()了测试函数。所做的第一件事createClient()就是调用static::bootKernel(). 这基本上意味着您启动的内核setUp()将被关闭,并启动一个新的内核,并使用内存 SQLite 数据库的新实例。
您可以将createClient()呼叫移至您的setUp(),替换bootKernel(), 以避免这种情况:
class MyTest extends WebTestCase
{
private $client = null;
public function setUp()
{
$this->client = static::createClient();
// prime database
}
public function testSomething()
{
$crawler = $this->client->request('GET', '/');
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
829 次 |
| 最近记录: |