2017-05-26 4 views
0

Au point de mon code de test où je vérifie que tous les nocks ont été appelés, j'ai un message d'erreur semi-utile pour expulser si un nock n'a pas été appelé (depuis le message d'erreur par défaut est inutile):Comment obtenir le nom d'une demande via l'objet Nock

try { 
    assertions(data, result); 
    if (assertNock !== null) { 
    // Expect that all mocked calls were made 
    if (nock.isDone() !== !!assertNock) { 
     console.error('One or more of your Nock matchers was never called.'); 
    } 
    expect(nock.isDone()).toBe(!!assertNock); 
    } 
    done(); 
} catch (err) { 
    ... 
} 

Cependant, je voudrais être en mesure de préciser qui appel n'a pas été fait. Mais, je ne peux pas sembler trouver un moyen d'obtenir cette information de l'objet nock, qui ressemble à:

{ [Function: startScope] 
    emitter: 
    EventEmitter { 
    domain: null, 
    _events: {}, 
    _eventsCount: 0, 
    _maxListeners: undefined }, 
    define: [Function: define], 
    loadDefs: [Function: loadDefs], 
    load: [Function: load], 
    enableNetConnect: [Function: enableNetConnect], 
    disableNetConnect: [Function: disableNetConnect], 
    removeInterceptor: [Function: removeInterceptor], 
    activeMocks: [Function: activeMocks], 
    pendingMocks: [Function: pendingMocks], 
    isDone: [Function: isDone], 
    isActive: [Function: isActive], 
    activate: [Function: activate], 
    cleanAll: [Function: cleanAll], 
    recorder: 
    { rec: [Function: record], 
    clear: [Function: clear], 
    play: [Function] }, 
    back: { [Function: Back] setMode: [Function], fixtures: null, currentMode: 'dryrun' }, 
    restore: [Function: restore] 
} 

Comment puis-je obtenir des informations utiles/d'identification sur la demande que was't faite à partir du Nock objet?

Répondre

2

Selon le documentation, les intercepteurs sont retirés une fois qu'ils ont été appelés. Avec cette connaissance, on peut alors utiliser nock.activeMocks() qui retournera un tableau d'éléments qui sont encore actifs. Si vous avez ajouté .persist() à l'une des encoches, elles seront toujours dans la liste. Dans ce cas, vous pouvez utiliser nock.pendingMocks() qui ne renvoie que les encoches qui n'ont pas encore été appelées.

nock.activeMocks(); // [ 'GET https://www.example.com:443/fake/url', 'POST https://sts.amazonaws.com:443/' ] 
    nock.pendingMocks(); // [ 'GET https://www.example.com:443/fake/url' ]