Search code examples
javascriptnode.jsnock

Intercept all requests with different verbs in nock


This is how one of my intercept functions looks like now:

interceptWithError() {
  nock(baseUrl)
    .get(/.*/)
    .replyWithError(500);

  nock(baseUrl)
    .put(/.*/)
    .replyWithError(500);

  nock(baseUrl)
    .post(/.*/)
    .replyWithError(500);

  nock(baseUrl)
    .delete(/.*/)
    .replyWithError(500);
}

I would like to avoid repetition, and also give it more flexibility by doing something like this:

interceptWithError(params) {
  const verb = params && params.verb;
  const stat = params && params.stat;

  return nock(baseUrl)
    .[verb]    // something like this!!!
    .replyWithError(stat)
}

Is there a way to do so???


Solution

  • This is what I came up with :)

    baseNock(url) {
      return this.nock(url)
        .replyContentLength()
        .defaultReplyHeaders({ 'Content-Type': 'application/json' });
    }
    
    interceptWithError(verbCodeMap) {
      const verbs = (verbCodeMap && Object.keys(verbCodeMap))
        || ['post', 'get', 'put', 'delete'];
    
      return verbs.map(verb => 
        baseNock(someUrl)[verb](/.*/)
          .replyWithError((verbCodeMap && verbCodeMap[verb]) || 500));    
    }