mocha/shouldとrequestを使用してnodejsプロジェクトにテストコードを書き込もうとしました。Node.js&Mocha/Should(JavaScript、ES6):コードは実行されませんでした。
私のコードは、GETリクエストをリモートサーバーに送信し、応答の内容を確認するために、いくつかのWebアドレスで配列を初期化します。
私の模擬テストでは、何らかの理由でフローがそこに到達しないようにするだけで、レスポンスを出力する必要があります。
私はforループがあることに注意してください。ループの内部では、最初のコンソールログには何かの理由があるが、そのループ内の残りのコードはスキップされている。私はデバッグモードでブレークポイントを入れますが、私のコードはループ内の最初のconsole.log()にしか到達せず、リクエスト部分はスキップされます。
私はリクエスト(ストリームとすべて)の未認証バージョンも使用しようとしましたが、同じ問題が発生しました。コードは決してそのリクエストラインに到達しませんでした。
nodejs内の非同期作業と関係しますか?何か?
私には何が欠けていますか?
'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();