目前,我正在尝试更新和扩展我对 Zend Framework 2 的知识,并且正在查看Zend 的用户指南,特别是有关Routing and Controllers的页面。
看到四个几乎相同的用于断言操作的测试函数可以访问,这冒犯了我的最佳实践概念,因此我重写了最后四个方法,添加了第五个作为帮助程序,如下所示:
private function assertActionCanBeAccessed ($action)
{
$this->routeMatch->setParam('action', $action);
$result = $this->controller->dispatch($this->request);
$response = $this->controller->getResponse();
$this->assertEquals (200, $response->getStatusCode());
}
public function testAddActionCanBeAccessed() { $this->assertActionCanBeAccessed('add'); }
public function testDeleteActionCanBeAccessed() { $this->assertActionCanBeAccessed('delete'); }
public function testEditActionCanBeAccessed() { $this->assertActionCanBeAccessed('edit'); }
public function testIndexActionCanBeAccessed() { $this->assertActionCanBeAccessed('index'); }
当我运行 PHPUnit 时,它运行良好。
但在我看来,这种方法可能对其他控制器有用。而且,此外,我只想知道如何使方法在我的代码中普遍可用。
所以我写了以下课程:
<?php
class ActionTestToolkit
{
public static function assertActionCanBeAccessed ($testcase, $action)
{
$testcase->routeMatch->setParam('action', $action);
$result = $testcase->controller->dispatch($testcase->request);
$response = $testcase->controller->getResponse();
$testcase->assertEquals (200, $response->getStatusCode());
}
}
?>
...并将其保存到vendor/Flux/library/ActionTestToolkit
如果没有 Zend 框架,我可能会使用require_once
.,但我发现在这个错综复杂的文件网络中找到正确的路径是不可能的。谷歌搜索这个主题似乎暗示我应该用自动加载器做点什么
有人可以告诉我我应该/必须添加什么代码吗
- 公共/index.php
- 模块/专辑/测试/AlbumTest/Controller/AlbumControllerTest.php
- 和/或任何其他文件
为了我可以更换线条
public function testAddActionCanBeAccessed()
{ $this->assertActionCanBeAccessed('add'); }
和
public function testAddActionCanBeAccessed()
{ ActionTestToolkit::assertActionCanBeAccessed($this, 'add'); }
这让我整个晚上都发疯了,所以提前谢谢!