タグ付けされた質問 「unit-tests」

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 …

4
Magentoのユニットテスト用ツール
Magentoの単体テストには何を使用しますか?または、単体テストとMagentoについて何を知っていますか?TDDを実行する場合でも、プロジェクトコンポーネントの単体テストをカバーする場合でも、これを実行するためのツールが必要です。 最初の基本的なアプローチはプレーンなphpunitを使用することですが、Magentoを「テスト可能」にするために追加のギミックが必要なものがあります。 私が使用したすべてのものはphpunitに関連しています。 MTAF EcomDev_PHPUnit(欠点:メールをテストできない) TechDivision_MagentoUnitTesting(Magento 2ユニットテストのバックポートを試みる) Mage-Test(Magentoの軽量ユニットテスト) 他のオプションはありますか?

3
Magento EE 1.13で設定されたEcomDev_PHPUnit
の手順に従って、EE 1.13でEComDev_PHPUnitをセットアップしようとしています。 https://github.com/EcomDev/EcomDev_PHPUnit まあ最初のハードルはmodmanを動かすことでしたが、私はあきらめてモジュールを手動でコピーしました。2番目の問題はステップ2にあります:私が実行するとき php ecomdev-phpunit.php -a magento-config --db-name $DB_NAME --base-url http://your.magento.url/ という例外が表示されます PHP Fatal error : Class 'Mage_Core_Model_Factory' not found in '../../../shell/abstract.php' on line 88 行って、abstract.phoにrequire_onceでファクトリパスを追加しましたが、別のクラスが見つからないというエラーがスローされます... 誰もこれに遭遇しましたか?VirtualBoxでUbuntu 12.10を使用しています。これに関する助けをいただければ幸いです。 解決策または一時的な解決策: 追加しなければならなかった require_once '../app/code/core/Mage/Core/Model/Factory.php'; require_once '../app/Mage.php'; の最初の行として ../shell/ecomdev-phpunit.php それがうまくいった。私はそれが正しいか間違っているのかわかりません:)専門家の提案を歓迎します

3
Magento 1テストフレームワーク
できる限り、テスト駆動開発(TDD)アプローチに従ってソフトウェアを開発したいと思っています。通常、PHPではPHPUnitを使用します。 理想的には、きめ細かいテストと粗いテストの両方を作成したいと思います。コードの設計と品質のガイドとなるユニットテスト、すべてがハングすることを確認する統合テスト、および受け入れテストでの高レベルの外部テストにより、お客様が提供するように依頼したものを実際に提供することを確認します。 TDDを促進するMagento用に調整されたテストフレームワークはありますか?

1
Magentoでのユニットテストオブザーバー
Magentoのユニットテストオブザーバーにどのようにアプローチしますか?(EcomDev_PHPUnitでの作業) どのようなアサーションが含まれますか? イベントがディスパッチされているかどうかを確認します(assertEventDispatched()) モックデータで関数を確認する ... 理想的には、他の開発者がアプローチとアサーションに関して意見を述べたいと思います。

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

3
ソースモデルの単体テスト
私のカスタム拡張機能には、エンティティの追加/編集フォームの一部の選択または複数選択、あるいはその両方の目的を満たすだけのモデルがいくつかあります。 したがって、これらはmagentoが「ソースモデル」と呼ぶものです。 関連する値は常に同じであり、メソッドは同じものを返します。 それらを単体テストするにはどうすればよいですか?または、さらに良いことに、それらの単体テストを作成する必要がありますか? 例を示します。 次のクラスは、呼び出されたフィールドの追加/編集フォーム、typeおよび同じフィールドのグリッド列に使用されます。 <?php namespace Sample\News\Model\Author\Source; use Magento\Framework\Option\ArrayInterface; class Type implements ArrayInterface { const COLLABORATOR = 1; const EMPLOYEE = 2; /** * Get options * * @return array */ public function toOptionArray() { $_options = [ [ 'value' => '', 'label' => '' ], [ 'value' …

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 …

3
ユニットテストでファクトリまたはプロキシを生成:「ReflectionException:Class…Factory does not exist」
私が理解している限りFactory、Proxyクラスがまだ存在しない場合、クラスはオートローダーによってオンザフライで生成されますvar/generation(参照:Magento 2でのファクトリーの生成をトリガーするもの) しかし、ユニットテストで新しいファクトリを参照するときにこのエラーが発生するのはなぜですか? ReflectionException:クラスMagento \ Framework \ Api \ Search \ SearchCriteriaBuilderFactoryは存在しません [...] / vendor / magento / framework / TestFramework / Unit / Helper / ObjectManager.php:161 use Magento\Framework\Api\Search\SearchCriteriaBuilderFactory; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; class SearchCriteriaTest extends \PHPUnit_Framework_TestCase { public function testFactoryGeneration() { $searchCriteriaBuilderFactory = (new ObjectManager($this))->getObject(SearchCriteriaBuilderFactory::class); } } ブートストラップファイルを使用していますdev/tests/unit/framework/bootstrap.php。 クラスを生成するために見つけた回避策: 実際のオブジェクトマネージャーを使用(ありがとう@DigitalPianism): \Magento\Framework\App\Bootstrap::create(BP, …

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 Enterprise Edition 1.14自動化機能テスト
Magento Enterprise Edition 1.14には事前に作成された機能自動化テストがありますか?私たちはMagento 1.14を使用しており、say testngを使用して機能のエンドツーエンドのユーザージャーニーテストを最初から作成する必要があるか、またはMagento 1.14に付属の機能テスト(存在する場合)を使用してビルドするかを決定する必要があります? 私の他の質問は、ログイン、注文の発注、注文の支払い、注文のキャンセルなどのエンドツーエンドのユーザージャーニーテストを実行するだけでは不十分です。QAテスターの下にあるユニット(コード)を暗黙的にテストします視点? また、Magentoフレームワークを使用しない場合は、Magentoをまったく使用しない他のストアでも同じ自動化テストを使用できるようになると考えています。 考えを共有する。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.