Ich versuche, einige Test-Code in einem Nodejs-Projekt mit Mocha/sollte und Anfrage schreiben.Node.js & Mocha/Sollte (JavaScript, ES6): Code nicht ausgeführt, obwohl es wie es aussehen sollte
Mein Code initialisiert ein Array mit einigen Webadressen, um eine GET-Anfrage an einen entfernten Server zu senden und den Inhalt der Antworten zu überprüfen.
Mein Mock-Up muss jetzt nur die Antwort ausdrucken, aber aus irgendeinem Grund kommt der Fluss nie dorthin.
Beachten Sie, dass ich eine for-Schleife habe. Innerhalb der Schleife wird das erste Konsolenprotokoll ausgedruckt, aber aus irgendeinem Grund wird der Rest des Codes in dieser Schleife übersprungen. Ich setze Break-Punkte im Debug-Modus, aber mein Code erreicht nur die erste console.log() innerhalb der Schleife und der Anfrageteil wird übersprungen.
Ich habe versucht, auch die unpromisierte Version der Anfrage (Streams und alle) zu verwenden, aber ich bekomme das gleiche Problem - der Code erreichte nie diese Anfrage Zeile, so dass es natürlich nicht weiter zum Drucken von nichts geht.
Hat es etwas mit asynchroner Arbeit in nodejs zu tun? etwas anderes?
Was fehlt mir?
'use strict';
const Promise = require('bluebird')
\t , _ = require('underscore')
\t , should = require('should')
\t , r = require('request')
\t , request = Promise.promisifyAll(r.defaults({jar: true}))
\t , client = require('../whatever/someClient')
\t , testConfig = require('../config/test-config')
;
Promise.longStackTraces();
class someFeatureTestSet {
\t
\t constructor() {
\t \t //...
\t \t this.client = client.getUser();
\t \t //...
\t }
\t
\t static create() { return new someFeatureTestSet(); }
\t
//... some other consts and functions
\t
\t initURLs(someUrlParamVal) {
\t \t return Array
\t \t .apply(null, Array(someUrlParamVal))
\t \t .map((x, idx) =>
\t \t \t `http://example.com/whatever?c=${someUrlParamVal}`
\t \t);
\t }
\t
\t runTests() {
\t \t const client = this.client;
\t \t const someFeatureTestSet = this;
\t \t
\t \t describe('get stuff',() => {
\t \t \t
\t \t \t it('should bla',() => {
\t \t \t \t const productsLinks = this.initURLs('123');
\t \t \t \t for (let x in productsLinks) {
\t \t \t \t \t console.log(productsLinks[x]); //gets printed, no problem
\t \t \t \t \t request.getAsync({ uri: productsLinks[x] })
\t \t \t \t \t .then(res => { //code never gets here. why?
\t \t \t \t \t \t console.log(res); //code never gets here. why?
\t \t \t \t \t })
\t \t \t \t }
\t \t \t });
\t \t \t
\t \t });
\t \t
\t }
\t
}
module.exports = someFeatureTestSet;
const createTestSet =() => someFeatureTestSet.create();
createTestSet().client().runTests();