0
我試圖測試一個接受作爲參數承諾的方法,但這個承諾永遠不會解決! 代碼:延遲測試承諾
function blockQueueUntilResolved (aPromise) {
aPromise.finally(releaseBlock)
queueBlocked = true
}
function releaseBlock() {
// other things..
}
測試:
describe('given ...', function() {
var initDefer
var initPromise
var fn1
var fn2
var promise1Resolved = false
var promise2Resolved = false
it('queueBlocked is set to true', function() {
// initDefer = $q(function (resolve) {
// initPromise = resolve
// })
initDefer = $q.defer()
// initPromise = initDefer.promise
fn1 = function() {
console.log('fn1 called')
promise1Resolved = true
}
fn2 = function() {
console.log('fn2 called')
promise2Resolved = true
}
QueueService.blockQueueUntilResolved(initDefer.promise)
QueueService.push(fn1)
QueueService.push(fn2)
expect(QueueService.isBlocked()).to.be.true
})
it('promises in the queue are not processed', function() {
expect(promise1Resolved).to.be.false
expect(promise2Resolved).to.be.false
})
describe('when the blocked promise is resolved', function() {
it('resolve', function() {
// initPromise()
initDefer.resolve()
})
it('promises in the queue are processed', function() {
expect(promise1Resolved).to.be.true
expect(promise2Resolved).to.be.true
})
})
})
我都嘗試戰略承諾,與延遲以及與此構造,但沒有工作。 promise1Resolved
和promise2Resolved
始終爲false,並且不會調用相關日誌。 怎麼回事?