私のangularJSアプリで$ httpBackendモックをオン/オフできるようにします。
つまり、$ httpBackendを遅延/オンデマンドで挿入したいということです。 もう一度電源を入れたり切ったりすることもできればいいですね。
たとえば、CMSからプレビューされているAngularJSアプリケーションの入力データを提供する場合などです。
以下のコードは、ngMockE2Eを通常の依存関係に移行し、標準的な方法で$ httpBackendを私の工場に注入する場合にのみ機能します。
コードは設定ファイルからのすべての呼び出しにUPP $ httpBackendを設定し、それらのすべてに対応し...
const registerCalls =() => {
const injectormock = angular.injector(['ngMockE2E']); //lazy load not working as expected
const $httpBackend = injectormock.get('$httpBackend'); //lazy load not working as expected.
//Pass through for resources:
$httpBackend.whenGET(/.*.html/).passThrough();
$httpBackend.whenGET(/.*.json/).passThrough();
//API calls should be mocked:
const apiCalls = {};
for (var call in apiConfig) {
if ({}.hasOwnProperty.call(apiConfig, call)) {
const callConfig = apiConfig[call];
const url = angular.isDefined(callConfig.regex) ? callConfig.regex : callConfig.url();
if (callConfig.method === 'GET') {
apiCalls[call] = $httpBackend.whenGET(url);
} else if (callConfig.method === 'POST') {
apiCalls[call] = $httpBackend.whenPOST(url);
}
}
}
return apiCalls;
}
const success = function() {
const apiCalls = registerCalls();
for (var call in apiConfig) {
let response = {};
if (angular.isDefined(apiConfig[call].response)) {
response = apiConfig[call].response();
}
apiCalls[call].respond(200, response);
}
};
どうすればセットアップ$ httpBackendそれが有効/無効できるように、 AngularJSアプリは実行中ですか?
非常に良い答え、パターンは完璧に働いた –
それはあなたのために働いてうれしい。 – estus