如何得到诺克的回应

时间:2017-03-23 21:44:23

标签: javascript unit-testing http nock

我一直在编写一些单元测试,我注意到我似乎无法找到测试异步函数的好方法。所以我找到了nock。它似乎很酷,只有它有效。我显然遗漏了一些东西......

import nock from 'nock';
import request from 'request';

const profile = {
    name: 'John',
    age: 25
};

const scope = nock('https://mydomainname.local')
    .post('/api/send-profile', profile)
    .reply(200, {status:200});

request('https://mydomainname.local/api/send-profile').on('response', function(request) {
    console.log(typeof request.statusCode); // this never hits
    expect(request.statusCode).to.equal.(200);
});

request永远不会发生,所以如何测试nock是否实际返回{status:200}?我还尝试了fetch和定期http来电。这让我觉得它与我的nock代码有关吗?感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

Nock不会返回{status:200},因为它会拦截POST请求,但request语句正在发送GET请求。

您似乎想要使用指定的POST拦截profile请求?代码是:

var nock = require('nock');
var request = require('request');

const profile = {
  name: 'John',
  age: 25
};

const scope = nock('https://mydomainname.local')
  .post('/api/send-profile', profile)
  .reply(200, {status:200});

request.post('https://mydomainname.local/api/send-profile', {json: {name: 'John', age: 25}}).on('response', function(request) {
  console.log(request.statusCode); // 200
});