タグ付けされた質問 「phpunit」

3
Magento 2モジュールの統合テストの作成
これまでのところ、Magento 2のテストニーズに合わせて、PHPユニットを(多少なりとも)受け入れテスターとして使用してきました。サーバーの結果をテストし、モジュールがインストールされたシステムにHTMLリクエストを送信しました。独自の統合テストを作成できるようにします。Magento 2に同梱されているテストツールを使用すると、サードパーティの開発者は、Magentoのテストフレームワークコードを活用する独自の統合テストを作成できますか?それとも、私たち全員が独自のブートストラップを展開しますか? あれは 私はMagentoの開発者です 統合テストを作成したい 統合テストでは、Magento環境を完全にブートストラップして再生します(使用するオブジェクトマネージャーや依存関係の注入など)。 統合テストでテストを拡張しMagento\TestFramework\TestCase\AbstractControllerて、Magentoテストと同じヘルパーを使用したい テストを他のテストスイートから分離して実行できるようにしたい(つまり、15秒のテストを実行するのに2時間待つ必要がない) Magentoのテストとは別にテストを保存したい dev docsサイトにはテストに関するいくつかのスターター記事がありますが、Magentoに同梱されているテストを実行することを目的としており、独自のテストを作成して実行することはしていません。古いサンプルモジュールがありますが、それらはすべてPHPUnit_Framework_TestCaseクラスを拡張し、単体テスト(つまり、Magentoフレームワークに依存しないコードのテスト)のようです。 これを行うMagento提供の方法はありますか? そうでない場合、Magento開発者コミュニティのテストがそれを標準として採用できるように、誰かが独自のセットアップを展開しましたか?

2
Magento 2のPHPUnit 4.1でPHP7コードを単体テストする適切な方法は何ですか?
モジュールを作成するとき、アプリケーションの最も重要な部分の単体テストをモジュールに提供しようとしています。ただし、現時点(Magento 2.1.3)では、単体テストの作成方法についていくつかの方法があります。 さまざまなテスト方法 それを統合し、bin/magento dev:tests:run unitMagentoにバンドルされているデフォルトのphpunit設定の上で実行します。 それらを別々にvendor/bin/phpunit app/code/Vendor/Module/Test/Unit記述し、実行して、Magentoであるすべてをモックします。 それらを個別に記述し、すべてをモックし、PHPUnitのシステムグローバルバージョンを使用します。 それらを別々に記述し、で実行しますがvendor/bin/phpunit、それでも利用し\Magento\Framework\TestFramework\Unit\Helper\ObjectManagerます。 Magento 2およびPHPUnit それに加えて、Magento 2にはPHPUnit 4.1.0がバンドルされており、PHP7互換ではありません。ネイティブ型(stringおよびintなど)を型ヒントし、署名で戻り値の型を宣言すると、エラーがスローされます。たとえば、次のようなメソッドシグネチャを持つインターフェイス/クラス: public function foo(string $bar) : bool; ... PHPUnit 4.1.0でモックすることはできません。:-( 私の現在の状況 このため、私はほとんどの場合、3番目の方法(システムグローバルなPHPUnitバージョンを呼び出すこと)で単体テストを書いています。 私の設定では、PHPUnit 5.6がグローバルにインストールされているため、適切なPHP7コードを記述して解決できますが、いくつかの調整が必要です。例えば: phpunit.xml コンポーザーオートローダーを使用できるように、次のようにする必要があります。 <?xml version="1.0"?> <phpunit bootstrap="../../../../../../vendor/autoload.php" colors="true"> <testsuites> <testsuite name="Testsuite"> <directory>.</directory> </testsuite> </testsuites> </phpunit> ...そして、私のすべての- setUp()メソッドでは、次のチェックを行っているので、前方互換性でテストを書くことができます: // Only allow PHPUnit 5.x: if …

3
ComposerにインストールされたEcomdev_PhpUnitは、vfsstreamがないためにテストをスキップします
私はEnterprise Edition 1.13.1のインストールで作業しています(Community Editionでも同じ問題が発生しますが)、コンポーザーを使用して依存関係をインストールします。IvanのEcomdev_PhpUnit拡張機能は、通常のphpunitの依存関係をすべて購入したcomposerを介してインストールしました。また、phpunit.xml.distをvendor / ivanchepurnyi / ecomdev_phpunitからプロジェクトのルートディレクトリにコピーしました。 ユニットテストを初めて実行したときに、次のエラーを受け取りました。 The test was skipped, since vfsStream component is not installed. Try install submodules required for this functionality その後、次のrequire-devエントリを追加しcomposer.jsonて実行しましたcomposer update: "mikey179/vfsStream": ">=1.2.0", ただし、PHPUnitはvfsStreamがインストールされていないことを訴えます。 Ecomdev_PHPUnit拡張モジュールのGitHubリポジトリを見ると、composerの使用時にlibvsfstreamを自動ロードできるようにするパッチがマージされているように見えます。ただし、コンポーザーオートローダーはどこにも含まれていないため、これは部分的な解決策のように見えます。そのため、class_exists呼び出しは依然として失敗します。 /vendor/ivanchepurnyi/ecomdev_phpunit/app/code/community/EcomDev/PHPUnit/bootstrap.php:41を編集して、ブートストラップ中にcomposerオートローダーを含めることができます(または、bootstrap.phpをプロジェクトの別の場所にコピーして編集します) 。これがこの問題の最良の解決策ですか、それともComposerまたはEcomdev_PhpUnitに欠けている機能がありますか?

2
Magento 1.9の単体テストのベストプラクティス
いくつかのカスタムモジュールを使用してMagento 1.9サイトを管理しています。一部の機能はビジネスに不可欠であり、いくつかの単体テストが緊急に必要です。例えば、単価計算機。 私は通常Symfonyで開発しており、可能であればPHPUnit(Composer付き)をどうにかして使用したいと思っています。 一部の機能は、いくつかのカスタムデータベーステーブルにインポートされたデータに基づいているため、フィクスチャを何らかの方法でロードしたいと思います。 だから私はいくつかの単体テストを書くためのベストプラクティスのアプローチを探しています。チュートリアルなどを受け付けます。どんな助けでもありがたいです。

2
Contextオブジェクトをモックする方法
次のように、コンテキストオブジェクトを含むモジュールをテストしようとしています。 public function __construct( \Magento\Framework\App\Helper\Context $context, \Magento\Catalog\Model\Product\ImageFactory $productImageFactory, \Magento\Framework\View\Asset\Repository $assetRepo, \Magento\Framework\View\ConfigInterface $viewConfig, ProductRepository $productRepo ) { parent::__construct($context, $productImageFactory, $assetRepo, $viewConfig); $this->productRepo = $productRepo; } 単体テストを実行すると、次のエラーメッセージが表示されます。 PHPUnit_Framework_Error : Argument 1 passed to Magento\Catalog\Model\Product::__construct() must be an instance of Magento\Framework\Model\Context, none given, called in ... このオブジェクトのモックを作成したり、このエラーを修正するにはどうすればよいですか?

2
magento 2の単体テストのオブジェクトマネージャーを使用してScopeConfigInterfaceを取得する方法
ユニットテストの行をmagento 2データベースのcore_config_tableから読み取ろうとしています。このリンクを読んだので、この仕事を成し遂げることを知っています 。私は使用する必要があります: \Magento\Framework\App\Config\ScopeConfigInterface 使って: \Magento\Framework\TestFramework\Unit\Helper\ObjectManager これが私のコードです: protected function setUp() { $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $this->scopeConfig = $objectManager->getObject('\Magento\Framework\App\Config\ScopeConfigInterface'); } public function testgetImageCDNConfigValue() { $this->scopeConfig->getValue($this->path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE); if ($this->scopeConfig == null) { $this->assertFalse(true); } else { $this->assertTrue(true); } } testObjectを使用して必要なすべてのオブジェクトを取得できますが、取得したい\Magento\Framework\TestFramework\Unit\Helper\ObjectManagerときはいつでも\Magento\Framework\App\Config\ScopeConfigInterface 致命的なエラー:C:\ xampp \ htdocs \ magento \ vendor \ magento \ framework …

2
フロントエンド開発者向けのPHP静的テスト
私はFrontoolsでPHP静的テストを追加してテストプロセスを簡素化および改善しようとしています。パフォーマンスを向上させることができる場合、b / c結果を得るのに非常に時間がかかります。 GHの問題-https://github.com/SnowdogApps/magento2-frontools/issues/45 私はPHPのテストライブラリやツールに慣れていないので、いくつか質問があります。 M2が2014年のテストライブラリ(PHPUnitとPHP_CS)を新しいものではなく使用する理由はありますか? このテストの出力が混乱しているように見え、何がどこでどこで問題が発生したのかを理解することが難しいのは正常ですか?CSS / JSのコード品質テストの出力と比較すると、それは悪夢です。PHPのバックトレースのように見える代わりに、より良いレポーターや、意味のあるレポートを取得する他の方法はありますか? それがとても遅い理由は何ですか?テンプレートファイルの分析には、7〜8分かかります。最悪の場合のフロントエンドテストのほとんどは数秒かかるため、問題に関するライブフィードバックを得る方法はありません。 Magento 2インスタンス全体(CIテスト)ではなく、単一のモジュール(つまりテーマ)がある場合に、このタイプのテストを実行するにはどうすればよいですか? PHP_CSにはすでにGulpの単純なラッパーがあるようですが、設定がどこに保存されているのかわかりません。/.php_csファイルにありますか?

1
Magento 2:未定義のメソッドMock_BlockFactory_4b440480 :: create()テストの呼び出しの修正
私は最近、プル提出し、直接使用されているオブジェクトマネージャの単一のインスタンスを修正するためにMagentoのにリクエストを。 ただし、Magentoのtravisユニットテストの実行は次のエラーで失敗しました。 PHPの致命的なエラー:/home/travis/build/magento/magento2/app/code/Magento/Cms/Controller/Adminhtml/Block/Delete.phpの39行目の未定義メソッドMock_BlockFactory_4b440480 :: create()への呼び出し travisビルドに基づいて、どのテストが失敗したかさえわかりません。スタックトレースを使用して、ローカルで同様の(同一の)エラーをローカルで取得できました PHP Fatal error: Call to undefined method Mock_BlockFactory_ec77572c::create() in /Users/alanstorm/Documents/github/astorm/magento2/app/code/Magento/Cms/Controller/Adminhtml/Block/Delete.php on line 39 PHP Stack trace: PHP 1. {main}() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/phpunit:0 PHP 2. PHPUnit_TextUI_Command::main() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/phpunit:55 PHP 3. PHPUnit_TextUI_Command->run() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/TextUI/Command.php:132 PHP 4. PHPUnit_TextUI_TestRunner->doRun() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/TextUI/Command.php:179 PHP 5. PHPUnit_Framework_TestSuite->run() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:426 PHP 6. PHPUnit_Framework_TestSuite->run() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/Framework/TestSuite.php:675 PHP 7. PHPUnit_Framework_TestCase->run() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/Framework/TestSuite.php:675 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.