uzulla / mockslimclient
用于 Slim 框架 Mock 的网络爬虫。 (用于单元测试)
v2.0.0
2019-10-07 04:27 UTC
Requires
- php: >=7.3
- paquettg/php-html-parser: 2.1.*
Requires (Dev)
- phpunit/phpunit: 8.*
- slim/slim: 2.4.*
This package is auto-updated.
Last update: 2024-09-25 23:24:10 UTC
README
Mock Slim 的客户端。 (用于 PHPUnit)
Slim 框架中已有 Mock,但进行 POST 模拟等操作需要相对复杂的步骤。这使得它不太适合自动化测试,因此我优化了访问模拟。
使用 req()
可以获取 html,使用 req_dom()
可以获取 php-html-parser
实例,这样您就可以在不额外解析的情况下方便地进行验证。
请参考 example 和示例代码来了解实际用法。
注意
由于 Slim 的 Mock 最初并没有特别考虑这种用途,尤其是 POST 时的数据处理稍微有些复杂,但已经尽力让它表现得尽可能自然。
因此,未来 Slim 的设计变更可能会影响其功能。如果出现这种情况,请通过 ISSUE 等方式报告。
安装
使用 Composer
{
"require": {
"uzulla/mockslimclient": "dev-master"
}
}
示例
在 PHPUnit 测试中
<?php
class myTest extends \PHPUnit\Framework\TestCase
{
use \Uzulla\MockSlimClient; // use by trait
// over ride \Uzulla\MockSlimClient::registrationRoute()
static function registrationRoute($app)
{
$app->get('/', function() use ($app){
//...
});
// or \myApp::registrationRoute($app);
}
// over ride \Uzulla\MockSlimClient::createSlim()
static function createSlim()
{
return new \Slim\Slim([
'templates.path' => __DIR__.'/../../sample_app/templates'
]);
}
// sample test case.
public function testConfirmPost()
{
// get http://dummy/ html.
$raw_html = $this->req('/');
// get paquettg/php-html-parser instance
$dom = $this->req_dom('/post/form');
$this->assertTrue(!!$dom->find('input[name=name]'));
// get CSRF token.
$this->req('/');
$csrf_token = $_SESSION['csrf_token'];
$test_name = 'testname';
$test_body = 'testbody';
// build post data.
$input = http_build_query([
'nickname'=>$test_name,
'body'=>$test_body,
'csrf_token'=>$csrf_token
]);
// do post.
$dom = $this->req_dom('/post/confirm', 'POST', $input);
$this->assertEquals($test_name, $dom->find('div.nickname-preview', 0)->text);
$this->assertEquals($test_name, $dom->find('input[name=nickname]', 0)->value);
}
}
使用示例代码
检查示例 webapp。
$ cd sample_app
$ php -S localhost:5000
执行示例 PHPUnit 测试
$ cd sample_test
$ php ../vendor/bin/phpunit
PHPUnit 3.7.28 by Sebastian Bergmann.
Configuration read from /Users/uzulla/dev/mock_slim_client/sample_test/phpunit.xml
..
Time: 91 ms, Memory: 4.50Mb
OK (2 tests, 2 assertions)
许可证
MIT
另请参阅
- slim framework https://slim.php.ac.cn/
- paquettg/php-html-parser https://github.com/paquettg/php-html-parser
- phpunit https://github.com/sebastianbergmann/phpunit/