В файле я хотел бы проверить, у меня есть следующий код:гася в promisified функции с Синоном и Блюбердо
var httpGet = Promise.promisify(require("request").get);
httpGet(endpoint, {
auth: {bearer: req.body.access_token},
json: true
})
.then(...)
Теперь, в моих тестах, я хочу, чтобы убедиться, что HttpGet называли когда-то, и убедитесь, что параметры действительны. Перед тем, как promisified мой тест не выглядел так:
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 является promisified. Вместо этого я попробовал наследовать request.getAsync (поскольку bluebird добавляет «Async» к многозначным функциям), но это тоже не работает. Есть идеи?
В случае, если кто-то еще работает в это, что работает для меня, чтобы сделать 'Promise.promisifyAll()' первый, а затем поставить заглушку на 'someMethodAsync()', который вы хотите временно переопределить для теста. – nephets