Sto cercando un modo per eseguire il codice asincrono prima dell'intero test della moka.Esegui codice asincrono prima dell'intero test della moka
Ecco un esempio di un test che utilizza una serie di argomenti & di aspettative e cicli su tutti gli elementi di questo array per produrre asserzioni di funzioni.
var assert = require('assert')
/* global describe, it*/
var fn = function (value) {
return value + ' ' + 'pancake'
}
var tests = [
{
'arg': 'kitty',
'expect': 'kitty pancake'
},
{
'arg': 'doggy',
'expect': 'doggy pancake'
},
]
describe('example', function() {
tests.forEach(function (test) {
it('should return ' + test.expect, function(){
var value = fn(test.arg)
assert.equal(value, test.expect)
})
})
})
Ora, la mia domanda è come sarebbe questo lavoro se i test valore proveniva da una promessa, come questo:
var assert = require('assert')
var Promise = require('bluebird')
/* global describe, it*/
var fn = function (value) {
return value + ' ' + 'pancake'
}
function getTests() {
return Promise.resolve('kitty pancake')
.delay(500)
.then(function (value) {
return [
{
'arg': 'kitty',
'expect': value
},
{
'arg': 'doggy',
'expect': 'doggy pancake'
}
]
})
}
getTests().then(function (tests) {
describe('example', function() {
tests.forEach(function (test) {
it('should return ' + test.expect, function(){
var value = fn(test.arg)
assert.equal(value, test.expect)
})
})
})
})
anche cercato:
describe('example', function() {
getTests().then(function (tests) {
tests.forEach(function (test) {
it('should return ' + test.expect, function(){
var value = fn(test.arg)
assert.equal(value, test.expect)
})
})
})
})
Tuttavia, in questo esempio nessuno dei test eseguiti perché mocha non riconosce la dichiarazione descrittiva perché è all'interno di una promessa.
before
/beforeEach
non farà nulla per aiutare con un test nel formato in ogni caso a meno che il era un gancio beforeTest
che avrebbe fornito moka con la consapevolezza che c'è un'operazione asincrona che deve essere eseguito prima l'intero test.
Come sarebbe questo vivere nella cartella 'test'? Mi serve per giocare bene con altri test quando eseguo 'mocha' e la copertura del codice? – ThomasReggi
Solo i test dovrebbero vivere nella cartella 'test',' test-launcher.js' dovrebbe essere alla radice del progetto, o in una directory contenente altre utilità se ne hai una. La copertura del codice dovrebbe funzionare perfettamente, ad esempio, con Istanbul, 'istanbul cover test-launcher.js' dovrebbe darti quello che vuoi. Ho creato un progetto di esempio con copertura del codice, dargli un'occhiata. https://github.com/tuvistavie/mocha-async-test –