1

別のゲートウェイのサポートを追加することを目的として、Omnipay を検討しています。Composer でインストールした後、Paypal (サンプル ゲートウェイとして) と Omnipay Common テストを実行してみました。両方のパッケージで、bootstrap.php を調整して、composer autoload ファイルを見つけられるようにしました。Paypal テストは正常に実行されます (緑)。

ただし、一般的なテストは 1 回の失敗と 38 個のエラーで失敗します。すべての失敗/エラーは、AbstractGatewayTest、AbstractRequestTest、AbstractResponseTest にあります。

これは、PHPUnit または Mockery がモック化された抽象クラスを処理する方法に何か変更があったのではないかと思います。PHPUnit 3.7.34 を使用しています。私は最近、Laravel プロジェクトに PHPUnit 4.0.* を使用していますが、Omnipay には 3.7 が必要です。

composer.lock は、Mockery 0.9.0 を使用していることを示しています。OS X Mavericks の macports 経由でインストールされた php 5.4.* を実行しています。

誰が私をつまずかせているのかについての洞察を持っていますか? ありがとう!

編集:失敗メッセージの例:

38 個のエラーがありました。

1) Omnipay\Common\AbstractGatewayTest::testGetShortName
BadMethodCallException: Method Mockery_0_Omnipay_Common_AbstractGateway::getDefaultParameters() does not exist on this mock object

.../vendor/omnipay/common/src/Omnipay/Common/AbstractGateway.php:53
.../vendor/omnipay/common/src/Omnipay/Common/AbstractGateway.php:40
.../vendor/mockery/mockery/library/Mockery/Container.php:426
.../vendor/mockery/mockery/library/Mockery/Container.php:210
.../vendor/mockery/mockery/library/Mockery.php:71
.../vendor/omnipay/common/tests/Omnipay/Common/AbstractGatewayTest.php:12

2) Omnipay\Common\Message\AbstractRequestTest::testInitializeWithParams
Argument 1 passed to Omnipay\Common\Message\AbstractRequest::__construct() must implement interface Guzzle\Http\ClientInterface, none given

.../vendor/omnipay/common/src/Omnipay/Common/Message/AbstractRequest.php:46
.../vendor/mockery/mockery/library/Mockery/Container.php:426
.../vendor/mockery/mockery/library/Mockery/Container.php:210
.../vendor/mockery/mockery/library/Mockery.php:71
.../vendor/omnipay/common/tests/Omnipay/Common/Message/AbstractRequestTest.php:14

「...」は私のソースコード領域です。

4

1 に答える 1

0

Adrian Macneil のアドバイスと説明に従って、Omnipay 共通ファイルを個別にチェックアウトしたところ、単体テストは実際に緑色で実行されました (成功):

git clone git@github.com:omnipay/common.git
cd common/
composer update --dev && composer dump-autoload
vendor/bin/phpunit 

収量:

PHPUnit 3.7.34 by Sebastian Bergmann.

Configuration read from /Users/ewb/startrib/omnipay/common/phpunit.xml.dist

...............................................................  63 / 161 ( 39%)
............................................................... 126 / 161 ( 78%)
...................................

Time: 94 ms, Memory: 8.00Mb

OK (161 tests, 258 assertions)

念のため、bootstrap.php を次のように調整します。これにより、Composer に依存関係として含まれているテストを実行できます。私はcomposerとLaravelの両方に不慣れなので(omnipayはLaravelとは何の関係もありません)、私のアプローチはベストプラクティスではないようです。アドバイスありがとう!

次のバージョンのbootstrap.phpは、vendor/autoload.php を含むディレクトリが見つかるまで、ソース ツリー (5 レベルのサニティ制限) をたどります。

<?php

error_reporting(E_ALL | E_STRICT);

// Locate and include the composer autoloader
$sanity = 5;
$dir = realpath(__DIR__);
do {
    $dir = dirname($dir);
    $autoload = $dir.'/vendor/autoload.php';
} while ($sanity-- && !file_exists($autoload));
$autoloader = require $autoload;

// autoload abstract TestCase classes in test directory
$autoloader->add('Omnipay', __DIR__);
于 2014-04-05T18:03:44.683 に答える