2015-08-03 4 views
15

Trovo incredibilmente frustrante che le angock-mock blocchino tutte le richieste PER DEFAULT e mi costringano a "passare" ciò che voglio.angock-mocks - solo richiesta esplicita fittizia. passthrough a tutte le richieste inaspettate

A volte voglio semplicemente testare 1 url con una simulazione e devo passare attraverso seri cerchi per ogni errore "Richiesta inattesa".

Non so regex, non mi piace regex, non voglio usare regex!

guarda a questo codice orribile ho bisogno per una semplice finta

$httpBackend.whenGET(/\/atlas\/account\/[0-9]+$/) 
    .respond(atlasAccounts[0]); 

    $httpBackend.whenGET(/\/scripts$/).passThrough();  
    $httpBackend.whenGET(/^\w+.*/).passThrough();  
    $httpBackend.whenPOST(/^\w+.*/).passThrough(); 

Perché non può questo solo essere ridotto ad una linea ???

$httpBackend.whenGET(/\/atlas\/account\/[0-9]+$/) 
    .respond(atlasAccounts[0]); 

O, meglio ancora, perché non si supporta i caratteri jolly maledetti? Stanno cercando di rendere le vite degli sviluppatori più difficili?

$httpBackend.whenGET("/atlas/account*") 
    .respond(atlasAccounts[0]); 

Questo è tutto quello che serve, se solo fosse questo intuitivo ...

C'è un modo per disattivare questa convenzione tutto-o-niente in ngMock e gli URL intercettare solo io ESPLICITAMENTE prendo gioco?

+0

Seriamente sono totalmente d'accordo con i giorni trascorsi su questo, non avevo idea che blocchi tutte le altre richieste di default. – IronHide

risposta

9

Aggiungi tutte le acquisizioni prima di aggiungere infine un passthrough per tutti. Sto facendo qualcosa di simile nella mia applicazione e funziona perfettamente:

function run($httpBackend) { 
    var phones = [{ name: 'phone1' }, { name: 'phone2' }]; 

    // Capture specific request 
    $httpBackend.whenGET('/phones').respond(function() { 
     return phones; 
    }); 

    // Passthrough everything 
    $httpBackend.whenGET(/[\s\S]*/).passThrough(); 
} 

Questo catturerà '/ telefoni'. Se non cattura, passerà attraverso.

Problemi correlati