В файле, который я хотел бы протестировать, у меня есть следующий код:
var httpGet = Promise.promisify(require("request").get);
httpGet(endpoint, {
auth: {bearer: req.body.access_token},
json: true
})
.then(...)
Теперь, в моих тестах, я хочу убедиться, что HTTPGet был вызван один раз и убедитесь, что параметры действительны. Перед тем, как обещать, мой тест выглядит следующим образом:
beforeEach(function () {
request.get = sinon.stub()
.yields(null, null, {error: "test error", error_description: "fake google error."});
});
afterEach(function () {
expect(request.get).to.have.been.calledOnce();
var requestArgs = request.get.args[0];
var uri = requestArgs[0];
expect(uri).to.equal(endpoint);
//...
});
К сожалению, это не работает, когда request.get является многообещающим. Вместо этого я попробовал наследовать request.getAsync(поскольку bluebird добавляет "Async" к многозначным функциям), но это тоже не работает. Любые идеи?