there4 / slim-test-helpers
Slim 框架的集成测试辅助工具
v2.1.3
2017-09-27 13:20 UTC
Requires
- illuminate/database: >=4.0
- phpunit/dbunit: 2.*|3.*
- phpunit/phpunit: ^4.8|5.*|6.*
- slim/slim: ~3.1
Requires (Dev)
README
Slim 框架 3 的集成测试辅助工具
有关完整示例,请参阅配套仓库 there4/slim-unit-testing-example。
示例
以下是一个针对非常简单的端点的测试,该端点从应用程序配置中返回版本。我们断言 Slim 返回了 200
状态码,并且版本与我们的期望匹配。
class VersionTest extends LocalWebTestCase { public function testVersion() { $this->client->get('/version'); $this->assertEquals(200, $this->client->response->getStatusCode()); $this->assertEquals($this->app->config('version'), $this->client->response->getBody()); } }
以下是一个示例,说明如何在测试用例中传递数据到 POST 端点并在端点中稍后检索它。我们在请求体中传递编码的 JSON 数据。端点中使用 $app->request->getBody()
来检索数据。
// test file class UserTest extends LocalWebTestCase { public function testVersion() { ...... $data = array("user" => 1); $data = json_encode($data); $this->client->post('/user', $data); ...... } } // endpoint file ..... $app->post('/user', function() use ($app) { ..... $data = $app->request->getBody(); $data = json_decode($data, true); ...... });
DbUnit 示例
如果您想使用数据库测试用例,请使用类 WebDbTestCase
。 注意:请确保您用于测试用例模型的名称不会与您的实际数据库表冲突。
class LocalDbWebTestCase extends \There4\Slim\Test\WebDbTestCase { /** * You must implement this method * @return PHPUnit_Extensions_Database_DataSet_IDataSet */ public function getDataSet() { return $this->createFlatXMLDataSet( dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fixture.xml' ); } }
设置
您需要一个用于 phpunit 的引导文件来实例化您的 Slim 应用程序。您可以在示例应用程序中看到[一个示例引导文件]。
您将实现自己的 getSlimInstance()
方法,该方法通过扩展 WebTestCase
辅助类来返回您的应用程序实例。