現在、Zend Framework 2 の知識を更新して拡張しようとしています。Zend's User Guide 、特にRouting and Controllersのページを見ています。
アクションをアサートするための 4 つのほぼ同一のテスト関数にアクセスできるのを見て、私のベスト プラクティスの概念に腹を立てたので、最後の 4 つのメソッドを書き直し、次のようにヘルパーとして 5 番目のメソッドを追加しました。
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 Framework がなければ、私は を使用していたでしょうがrequire_once
、この絡み合ったファイルの中でパスを正しく取得することは不可能であることがわかりました。そして、件名をグーグルで検索すると、オートローダーで何かをする必要があるかもしれないことが示唆されているようです
誰かが私が追加すべき/追加しなければならないコードを正確に教えてもらえますか
- public/index.php
- モジュール/アルバム/テスト/AlbumTest/Controller/AlbumControllerTest.php
- および/またはその他のファイル
行を置き換えることができるように
public function testAddActionCanBeAccessed()
{ $this->assertActionCanBeAccessed('add'); }
と
public function testAddActionCanBeAccessed()
{ ActionTestToolkit::assertActionCanBeAccessed($this, 'add'); }
これは一晩中私を夢中にさせていたので、事前に感謝します!