2017-05-26 7 views
0

An dem Punkt in meinem Test-Code, wo ich überprüfen, dass alle Nocks aufgerufen wurden, habe ich eine halb-nützliche Fehlermeldung, um einen Nock nicht aufgerufen wurde (da die Standard-Fehlermeldung nutzlos ist):So erhalten Sie den Namen einer Anfrage über Nock-Objekt

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) { 
    ... 
} 

Allerdings würde Ich mag Lage sein die Anruf angeben wurde nicht vorgenommen. Aber ich kann nicht scheinen, einen Weg zu finden, dass die Informationen aus dem nock-Objekt zu erhalten, das wie folgt aussieht:

{ [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] 
} 

Wie kann ich nützlich/identifizierende Informationen über die Anforderung, die von der Nock gemacht was't Objekt?

Antwort

2

Gemäß der documentation werden Interzeptoren entfernt, sobald sie aufgerufen wurden. Mit diesem Wissen kann man dann verwenden, das ein Array von Elementen zurückgibt, die noch aktiv sind. Wenn Sie .persist() zu einem der Nocks hinzugefügt haben, werden sie immer noch in der Liste sein. In diesem Fall möchten Sie möglicherweise nock.pendingMocks() verwenden, die nur die Nocks zurückgibt, die noch nicht aufgerufen wurden.

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' ] 
Verwandte Themen