我在一个类中有一个函数,该函数调用REST api并返回Promise对象。我能够测试Promise对象,但不知道我们如何存根或模拟rest api调用和测试。
Token.js
class Token {
getToken(payload) {
let outahToken = new Promise(function (resolve, reject) {
request('hhtps://xyz.com', function (err, res, body) {
if (err) {
reject(err);
} else {
console.log(res);
resolve(body);
}
})
});
return outahToken;
}
}
module.exports = Token;
Token.test.js
'use strict'
const chai = require("chai");
const expect = chai.expect;
const nock = require('nock');
const sinon = require("sinon");
const Token = require('Token');
describe('Get User tests', () => {
let Token;
beforeEach(() => {
outhController = new Token();
sinon.stub(Token, 'getToken').returns(Promise.resolve({
name: "All"
}));
});
it('Outh test', (done) => {
Token.getToken(payload)
.then(response => {
expect(typeof response).to.equal('object');
done();
});
});
});
答案 0 :(得分:0)
我们可以使用proxyquire模拟请求模块,并检查是否使用正确的参数调用了该模块。我们需要proxyquire,因为请求模块导出的函数df.describe()
#with X is already pre-proccessed
df2 = pandas.DataFrame(X)
df2.describe()
仅使用Sinon很难模拟。
由于请求方法是一个回调函数,因此我们可以使用Sinon yields对其进行模拟。
request()
希望有帮助