$this->assertCount(1, $crawler->filter('meta[charset="utf-8"]'));
$this->assertCount(1, $crawler->filter('html:contains("meta[charset="utf-8"]")'));
这一切都失败了。我如何测试元标记?我需要检查特定值的元关键字和描述。
答案 0 :(得分:0)
我来到这里是因为我的页面中的表单元素遇到了同样的问题:$ crawler没有过滤任何内容
转向问题是我的 app.php 中的返回,当我最终正确地改变它所有的测试工作正常。 我将这里复制我的工作代码(假设我的 view.php 是一个带有基本html代码的php文件)
<?php
use Symfony\Component\HttpFoundation\Response;
require_once __DIR__ . '/path/to/autoload.php';
$app = new Silex\Application();
$app->get('/', function() {
ob_start();
require __DIR__ . '/path/to/view.php';
$response = ob_get_contents();
ob_end_clean();
return new Response($response);
});
return $app;
所以,在 web / index.php 中,我必须要求 app.php 并运行它:
<?php
$app = require_once __DIR__ . '/../app/app.php';
$app->run();
最后,在我的功能测试中,我可以执行以下操作:
<?php
require __DIR__ . '/path/to/autoload.php';
use Silex\WebTestCase;
class SampleTests extends WebTestCase
{
public function createApplication()
{
return require __DIR__ . '/path/to/app.php';
}
public function testSamplePage()
{
$client = static::createClient();
$crawler = $client->request('GET', '/');
$this->assertTrue($client->getResponse()->isSuccessful());
$this->assertCount(1, $crawler->filter('meta[charset="utf-8"]'));
}
}
我确信这不是最好的方法,但这是我唯一想到的。