1

ワークベンチでパッケージをテストする方法は何ですか? 単体テストを作成すると、クラスは自動ロードされません。したがって、これは次のことを意味します。

<?php

use \Mockery as m;

class ExampleTest extends TestCase {

public function tearDown()
{
    m::close();
}

/**
 * A basic functional test example.
 *
 * @return void
 */
public function testShouldReturnValidServer()
{

    $mock = m::mock('MailChimp[sendCurl]');

    MailChimp::listSubscribe( array( 'id' => 'c79a023ff2', 'email_address' => 'dennieriechelman@gmail.com'));

   }
}

クラス TestCase が見つからないというエラーが発生します。クラス TestCase を composer.json (パッケージ フォルダーにあるもの) のオートロードに追加すると、クラスが使用可能になります。ただし、「Illuminate\Foundation\Testing\TestCase」が利用できないなどの次のエラーが表示されます。私の質問は、パッケージフォルダーの composer.json に何を自動ロードする必要があるかです。すべてが私のメインのcomposer.jsonと同じように、または私が見逃している他の方法があります。

私はマヌエルでそれが言うことを知っています」

workbench/[vendor]/[package] ディレクトリから git init を実行し、ワークベンチから直接パッケージを git push することができます! これにより、絶え間ない composer update コマンドに悩まされることなく、アプリケーション コンテキストでパッケージを便利に開発できます。

しかし、私はこれを理解していません。誰かがこれが何を意味するのか説明できますか? ちなみに、私はgitに精通しています。コンテキストがわかりません。

EDIT1私が理解している限りでは、パッケージをリポジトリにプッシュしてから、メインのcomposer.jsonにパッケージとして含めます。これが開発時にどのように役立つかわかりません。うまくいけば、私はこれが間違っていることを理解しています.. :)

EDIT2私は間違っていました。パッケージが安定するまでワークベンチに保管します。Nils が以下で指摘したように、問題はまだ残っています。アプリを起動して単体テストできる環境を作るにはどうすればいいですか?ファサードなどをモックできるモデルをテストするようなものですか。それとも、ワークベンチでこれを行うのは悪い習慣ですか?

4

3 に答える 3

7

https://github.com/orchestral/testbenchでこの目的のためにパッケージを作成しました

于 2013-06-12T04:35:19.727 に答える
2

ワークベンチ テストの結果をメイン アプリケーションの結果とマージしてもかまわない場合は、次のように、laravel ルートのメイン phpunit.xml にディレクトリを追加するだけです。

<testsuites>
    <testsuite name="Application Test Suite">
        <directory>./app/tests/phpunit/</directory>
        <directory>./workbench/vendor/packageOne/tests/</directory>
        <directory>./workbench/vendor/packageTwo/tests/</directory>
    </testsuite>
</testsuites>

次に、パッケージの tests フォルダーに、通常どおり phpunit テストを TestCase.php ファイルと共に配置し、createApplication() 関数を次のように調整します。

<?php

class TestCase extends \Illuminate\Foundation\Testing\TestCase {

public function createApplication()
{
    $unitTesting = true;
    $testEnvironment = 'testing';
    return require './bootstrap/start.php';
}

パッケージ composer.json がその TestCase.php ファイルを次のように自動ロードすることを確認してください。

"autoload": {
    "classmap": [
        "tests/phpunit/TestCase.php"           
    ]
}

composer dump-autoload -o を実行してすべてを調整すると、laravel ルートから phpunit を実行できるようになり、アプリケーションとパッケージの両方がテストされます。

于 2014-12-11T20:55:35.453 に答える