tiny /symfony-testing
用于简化测试Symfony Web应用程序的工具。
Requires
- php: >=5.6
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^5.7
- symfony/browser-kit: ^3.4
- symfony/css-selector: ^3.4
- symfony/framework-bundle: ^3.4
- symfony/http-kernel: ^3.4
- symfony/phpunit-bridge: ^3.0
- symfony/twig-bundle: ^3.4
This package is auto-updated.
Last update: 2024-09-16 21:45:20 UTC
README
用于在基于Symfony框架构建的Web应用程序上执行功能测试的辅助包。
包含两个主要组件
- TinyTestingBundle。旨在处理功能测试期间显示异常。
- WebTestCase。基于Symfony的WebTestCase构建,以提供更友好的测试界面。
目前仅支持Symfony 3.4。
TinyTestingBundle
该包启用在Symfony应用程序上运行功能测试时显示实际抛出的异常。它允许所有 Symfony\Component\HttpKernel\Exception\HttpException
被正常处理(例如,对于Twig可以渲染404页面),并将任何其他异常重新抛出,以便由PHPUnit捕获并报告。
如果您制作HTML Web应用程序,那么在dev
模式下浏览时,如果发生错误,您将看到一个包含有关异常的所有信息的精美页面(其类、代码、消息、堆栈跟踪等)。在运行测试时,如果实际抛出此异常,则更有价值,因为它可以报告给控制台(或您或您的IDE使用的任何输出)。
当然,您可以在测试用例中这样做
$client->catchExceptions(false);
以强制HttpKernel
抛出异常而不是分发kernel.exception
事件。
问题是使用此选项需要一些手动工作(不是很多,但定期)。我们必须要么在想要查看异常时关闭捕获(并重新运行测试),要么注意创建(或配置)不同的客户端以支持这两种情况。
最有可能的是,包应该仅注册到test
环境
// AppKernel.php if ($this->getEnvironment() === 'test') { $bundles[] = new Tiny\SymfonyTesting\TinyTestingBundle\TinyTestingBundle(); }
WebTestCase
提供一些辅助接口进行功能测试。扩展Symfony的本地 Symfony\Bundle\FrameworkBundle\Test\WebTestCase
。
其setUp()
创建客户端实例(可以通过$this->client
直接访问,它是受保护的)。所以如果你有自己的setUp()
,请确保调用parent::setUp()
。
一些配置性方法(即在使用请求之前使用),它们会影响所有后续请求。
protected function setHost($host)
设置主机,当请求路由涉及主机要求(如api.example.com/users
)时很有用
protected function setHeader($name, $value)
因此可以进行类似$this->setHeader('Authorization', 'Bearer wh.at.ever');
的操作
protected function setCookie($name, $value, $expires = null, $path = null, $domain = '', $secure = false, $httponly = false)
提供请求方法
protected request($uri, $method = 'GET', $parameters = [], $files = [], $server = [], $content = '', $changeHistory = true)
基本上与Symfony\Bundle\FrameworkBundle\Client::request
相同,除了$method
和$uri
参数是交换的。
一些快捷请求方法
protected function get($uri, $parameters = [])
protected function post($uri, $content = '', $parameters = [])
protected function put($uri, $content = '')
protected function patch($uri, $content = '')
protected function delete($uri, $content = '')
在请求之前,可以使用以下方法设置一些参数
protected function setParameters(array $parameters)
使用此方法设置的请求参数只与下一个后续请求一起发送。
响应和断言
请求后,可以通过$this->response
(Symfony\Component\HttpFoundation\Response
的实例)访问响应。
目前仅实现了一个针对响应状态码的断言,可以通过$this->assertStatusCode($expectedCode)
访问。