L'applicazione My Angular 1.3 utilizza angular-translate library. Nei miei test di Karma sto tentando di deridere il provider $translate
con un oggetto Mock che ho creato.Come deridere un provider
L'oggetto fittizio si chiama MockTranslate
e appartiene al modulo myMocks
. Non includo la fonte per MockTranslate
nella domanda in quanto non è pertinente alla domanda.
Il tema del mio test è un controller e posso facilmente deridere $translate
utilizzando il seguente:
module('myMocks');
inject(function($controller, MockTranslate) {
$controller("MyController", {
$translate: MockTranslate.create(translations);
});
});
È possibile che questo beffardo opere, tuttavia la mia preferenza sarebbe quella di prendere in giro il provider utilizzando il angular.mock.module
con qualcosa di simile :
module('myMocks');
module("myModule", function($provide) {
$provide.provider("$translate", function(MockTranslate) {
return MockTranslate.create(translations);
});
});
ma ottengo il seguente errore quando ho eseguito il mio test:
Error: [$injector:modulerr] Failed to instantiate module function ($provide) due to: Error: [$injector:unpr] Unknown provider: MockTranslate
Come faccio a prendere in giro un fornitore utilizzando angular.mock.module
?
Grazie @sbedulin voi mi ha aiutato a capire che il provider necessaria per implementare una funzione di '$ GET'. – b73
@ b73 benvenuto! Nota che anche le dipendenze vanno nella funzione '$ get'. Sarebbe bello se contrassegnassi la risposta come utile :) – sbedulin
Grazie @sbedulin, sì hai anche portato alla mia attenzione che le dipendenze vanno nella funzione '$ get';) Ho aggiunto una risposta separata in quanto mostra la soluzione esatta che sono andato con. – b73