現在、Angular2アプリケーション用のモックモジュールを追加することはできません。
この問題は、ここに投稿されたTODOを反映しています。
また、関連するSO投稿を相互参照するには: http://stackoverflow.com/questions/36354233/protractor-mocking-backend-with-angular2-on-api-request。
ありがとう。
@juliemrはAngular2のモックをサポートする予定ですか? はいの場合、いつ? ハイブリッドモードを使用する場合、モックはその間も機能し続けますか?
@ jlin412はい、最終的にはそうですが、aotとnon-aotの両方でどのように機能するかについて調査と慎重な検討が必要になります。 ハイブリッドを使用する場合は、ng1ビットで引き続き機能します。
他のすべての人-+1の問題にはgithubの絵文字応答を使用してください。 コメントを追加すると、実際の進捗状況を解析することが困難になります。 読みやすいように、これらのコメントを削除します。 ありがとう!
@juliemr角度2のモック実装に関するETAはありますか?
また、当面使用できる代替手段はありますか?
FROM: http://stackoverflow.com/questions/36354233/protractor-mocking-backend-with-angular2-on-api-request。
http-backend-proxyおよびhttpbackendパッケージについても同じことが言えます。
そのため、docker-composeを使用してE2Eテスト環境を作成しましたが、実装が誇張されているように感じます。
現在、ベストプラクティスはありますか?
バックエンド呼び出しをモックするのと同じ問題が発生しました。 Connectミドルウェアを使用してアプリを実行するときに、Angular1および2httpリクエストをモックできるプラグインを作成しました。
https://mdasberg.github.io/ng-apimock/
多分あなたはそれを使うことができます。
これを行うための機械工はわかりませんが、モックモジュールをインストールするための素朴なアプローチは次のようになると思います。
分度器はどういうわけかこれらの方法の両方をオーバーライドします:
platformBrowserDynamic().bootstrapModule
platformBrowser().bootstrapModuleFactory
その代わりに、新しいngModuleを構築し、モックアウトしたいモジュールを提供する単純なラッパーがあります(以下はそれがどのように見えるかの擬似コードです):
function bootstrapModuleOverride (moduleToBootstrap) {
@NgModule({
imports: [moduleToBootstrap],
provide: ArrayOfMockModules,
bootstrap: moduleToBootstrap.bootstrap
})
class moduleToBoostrapWrapper {}
platformBrowserDynamic().bootstrapModule(moduleToBoostrapWrapper);
}
この機能のリリースが計画されているかどうかはわかりますか?
この機能の+1。 Angular 2+アプリケーションのe2eテストにはモックが必要です!
Angular 2+が成長しているので、この機能はかなり緊急になっています:)
ええ、現時点でのワークフローには絶対に不可欠です。
私たちはすでにangular5にいますが、e2e仕様でhttpをモックすることはまだできません😕
( @tauil小さな世界、ハァッ?)
にaddMockModuleが必要な一般的な使用法は次のとおりです。
1)カスタムインターセプターを注入します。
https://angular.io/guide/http#writing -an-interceptor
例では、httpアクティビティをキャプチャし、テストが失敗した場合に分度器を使用してディスクに書き込みます。
2)通常、サービスの機能をオーバーライドして、サードパーティのデータサービスをモックします。
.decorator(
'xyzService',
[
'$q', '$delegate',
($q, $delegate) => {
$delegate.isEnabled = () => true;
return $delegate;
}
$delegate.getProfileDetail = () =>
$q.when({name: 'Tester 001', title: 'E2E Tester'});
])
カスタムサービスの場合:httpclientテンプレートアプローチに従うことができます。 (1)を実装すると、これも解決される可能性があります。
3)個々のページオブジェクトの内部にアクセスするため(コーシャではありませんが)
ng.probe($ 0)._ debugInfo
分度器executeScript
いつ実装されますか?
本当にこれでできます!
これは必須の機能ですが、どうして2歳になるのでしょうか。
回避策として、jswiremockを使用してバックエンド呼び出しをスタブすることができます。 私はここにいくつかの指示を書きました: https ://gist.github.com/jamescookie/f7b854226ca1e133d1b7b2798095b7f4
別の選択肢はnockです。
これは、フレームワークに依存せずに、HTTPリクエストをモックするためのユニバーサルライブラリです。
分度器サイトにすでに存在するng-apimockを使用できます。 ここにそれについての素晴らしいブログ投稿があります
AngularJsとAngularアプリに使用できます
この機能は、ng-apimockが分度器のコアライブラリに含まれている場合でも、コア分度器の一部である必要があるほど重要です。
できる限り親指を立てようとしていますが、この機能の進捗状況はどうなっていますか? 現時点では重いブロッカーです。
真剣に、分度器はAngularのために放棄されたばかりですか?
したがって、これは分度器や角度を変更せずに部分的に実行できます。 ng serve
の「モック」構成を作成して、異なるモジュールのセットを提供することができます。 これにより、依存サーバーを稼働させることなくバックエンドテストを実行でき、HTTPレイヤーでモックを実装する必要がなくなります。 これを示すサンプルリポジトリをここに作成しました: https ://github.com/westonpace/angular-example-mock-services
また、SOの質問への回答に必要な手順の概要もここにあります: https ://stackoverflow.com/questions/39942118/how-to-inject-different-service-based-on-certain-build-environment-in-angular2
Angular 1の場合ほど簡単/カスタマイズ可能ではありませんが(たとえば、さまざまなテストにさまざまなモックサービスを追加することはできません)、スキャフォールディングが稼働すると、モックサービスの追加と削除は非常に簡単になります。
ここでこれを処理するためのクイック-クリーン-ライブラリレスの方法の要約:
これに関する更新はありますか? @ jlin412調査と慎重な検討が必要だとおっしゃいましたが、これを始めましたか?
これに関する更新はありますか? @ jlin412調査と慎重な検討が必要だとおっしゃいましたが、これを始めましたか?
@katiesandford 、ここで詳しく説明するアプローチは、このセットアップでのほとんどのテスト状況に対応できると思います。 そうでない場合は、それらの外れ値が何であるかを知りたいので、将来の状況のためにそれらについて考えることができます
@gabrieldotyこのアプローチでは、サービスレベルでモックを作成できますが、よく理解していればhttpレベルではモックできません。
さらに、ビヘイビア駆動開発アプローチでは、モックを動的にする必要があります。 テスト手順が異なれば、モックも異なります。 これは、この設定では達成するのが難しいようです。
@gaeljw素晴らしいポイント! 動的モックを処理するためのかなり不格好な方法をいくつか見ることができますが、動的ソリューションが望ましいことは間違いありません!
私のアプリケーションは、すべてのHTTPリクエストを処理するために単一のデータサービスクラスのみを使用するため、その1つのサービスを交換するのはかなり簡単です。 しかし、それは本当のhttpモックほど普遍的ではありません。
それらの考えをありがとう!
これについて何かニュースはありますか? 分度器の開発はもはやそれほど活発ではないようです...
更新はありますか?
モジュールをモックすることで、#4300を回避できます。
うわー、このチケットはもう4年近く経ちました! 更新はありますか?
連絡あった?
最も参考になるコメント
@ jlin412はい、最終的にはそうですが、aotとnon-aotの両方でどのように機能するかについて調査と慎重な検討が必要になります。 ハイブリッドを使用する場合は、ng1ビットで引き続き機能します。
他のすべての人-+1の問題にはgithubの絵文字応答を使用してください。 コメントを追加すると、実際の進捗状況を解析することが困難になります。 読みやすいように、これらのコメントを削除します。 ありがとう!