2017-01-30 6 views
0

私は約束を利用するコードをいくつか持っていますが、Mochaを使用しているときは実行できません。私は必需品にそれを単純化していますnode test/index.jsを経由して実行するとノードーでMochaを使用しないと約束します

process.env.NODE_ENV = 'test'; 

const Promise = require('bluebird'); 

console.log('zzzz IN'); 
Promise.resolve('xxx').then(function(val) { 
    console.log('[normal]', val); 
}).catch(function(error) { 
    console.log('[error]', error); 

}) 
console.log('zzzz OUT'); 

は私が手:

zzzz IN 
zzzz OUT 
[normal] xxx 

が、モカ経由

> [email protected] test /Users/ajmas/Development/mocha-and-promise 
> eslint lib && mocha --timeout 10000 

zzzz IN 
zzzz OUT 


0 passing (0ms) 

はモカや方法でこの問題です私はものを構成しましたか?

Package.json:

{ 
    "name": "my-server", 
    "version": "0.0.1", 
    "description": "Mocha and Promises test case", 
    "main": "lib/main.js", 
    "scripts": { 
     "start-dev": "NODE_ENV=dev node test/index.js", 
     "start-dev-debug": "DEBUG=express:* npm run start-dev", 
     "start": "node lib/main.js", 
     "test": "eslint lib && mocha --timeout 10000" 
    }, 
    "engines": { 
     "node": ">=6.7.0" 
    }, 
    "dependencies": { 
     "bluebird": "^3.4.6" 
    }, 
    "devDependencies": { 
     "chai": "^3.5.0", 
     "chai-http": "^3.0.0", 
     "eslint": "^3.8.1", 
     "eslint-config-standard": "^6.2.1", 
     "eslint-plugin-promise": "^3.3.0", 
     "eslint-plugin-standard": "^2.0.1", 
     "mocha": "^3.2.0" 
    } 
} 

は、MacOS Xの10.12.2上のノード6.7.0を実行しています。また、 'bluebird'、 'promise'とネイティブPromiseで試してみましたが、それぞれ同じ動作です。

BTWこのコードは、私が統合テストを行うアプリケーションの一部であることを前提としていますが、約束が完了していないため、私はMochaからサーバーを起動できません。

答えて

0

は、それが動作判明、しかし、あなたは「は」関数の呼び出しでコードを配置する必要があり、そのようなこと:

it('Run the promise, function(done) { 
    Promise.resolve('xxx').then(function(val) { 
     console.log('[normal]', val); 
    }).catch(function(error) { 
     console.log('[error]', error); 
    }) 
}) 
+1

あなたは単に約束を返すことができ、 'done'を必要としません。 https://mochajs.org/#working-with-promisesを参照してください。 –

関連する問題