Ich bin auf der Suche nach einer Möglichkeit, Async-Code vor dem gesamten Mocha-Test auszuführen.Ausführen von Async-Code vor dem vollständigen Mocha-Test
Hier ist ein Beispiel für einen Test, der ein Array von Argumenten & Erwartungen und Schleifen über alle Elemente in diesem Array verwendet, um Funktionserklärungen zu erzeugen.
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)
})
})
})
Nun, meine Frage ist, wie würde diese Arbeit, wenn die Tests Wert von einem Versprechen kam, wie folgt aus:
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)
})
})
})
})
auch versucht:
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)
})
})
})
})
jedoch in diesem Beispiel keine Die Tests laufen, weil Mocha die Anweisung describe nicht erkennt, weil sie sich innerhalb eines Versprechens befindet.
before
/beforeEach
werden nichts tun sowieso mit einem Test im Format zu helfen, es sei denn, der ein beforeTest
Haken war, dass Mokka mit dem Wissen liefern würde, dass ein Asynchron-Betrieb gibt es die vor dem gesamten Test ausgeführt werden muss.
Wie würde das im 'test'-Ordner funktionieren? Ich brauche es, um gut mit anderen Tests zu spielen, wenn ich "Mokka" und Code-Coverage betreibe? – ThomasReggi
Nur Tests sollten sich im 'test'-Ordner befinden,' test-launcher.js' sollte sich entweder im Stammverzeichnis Ihres Projekts befinden oder in einem Verzeichnis, das andere Dienstprogramme enthält, falls Sie eines haben. Code Coverage sollte perfekt funktionieren, zum Beispiel mit istanbul, 'istanbul cover test-launcher.js' sollte dir geben, was du willst. Ich habe ein Beispielprojekt mit Code-Coverage erstellt, sehen Sie es sich an. https://github.com/tuvistavie/mocha-async-test –