How do I test a promise using Mocha? Getting "ReferenceError: <promise_name> is not a function"
How do I test a promise using Mocha? Getting "ReferenceError: <promise_name> is not a function"
我写了一个调用并检查响应代码的承诺。我想用节点测试这个。我一直收到 "TypeError: index.GeneratePromise is not a function",但我不知道哪里出了问题。
我试过将 promise 包装在另一个函数中,并从测试文件中调用它。这不等待 promise 响应,返回值为 "undefined"。我尝试了多种形式的承诺,async/await 等,但都没有用。
我的测试
var assert = require('assert');
var index = require('../index');
describe('Basic Mocha String Test', function () {
it('promise', function () {
index.GeneratePromise().then(function(value) {
console.log("promise value: ", value);
assert.equal(value, 200);
});
});
});
我的承诺
exports.GeneratePromise = new Promise(function(resolve, reject) {
https.get('https://www.google.com/', (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
console.log('status code: ', resp.statusCode)
resolve(resp.statusCode);
});
}).on("error", (err) => {
reject(err);
});
});
我希望至少有一些价值,而不是 "undefined" 返回。是测试文件中没有等待我的promise的问题
您导出的是实际的 Promise,而不是创建 Promise 的函数。因此,您不应使用 ()
。此外,it()
可以为您提供回调以告知 mocha 您的测试已完成。参见 mochas async docs。试试这个:
var assert = require('assert');
var index = require('../index');
describe('Basic Mocha String Test', function () {
it('promise', function (done) {
//index.GeneratePromise().then(function(value) {
index.GeneratePromise.then(function(value) { // Notice there is no ()
console.log("promise value: ", value);
assert.equal(value, 200);
done(); // This tells mocha your test is done
});
});
});
我写了一个调用并检查响应代码的承诺。我想用节点测试这个。我一直收到 "TypeError: index.GeneratePromise is not a function",但我不知道哪里出了问题。
我试过将 promise 包装在另一个函数中,并从测试文件中调用它。这不等待 promise 响应,返回值为 "undefined"。我尝试了多种形式的承诺,async/await 等,但都没有用。
我的测试
var assert = require('assert');
var index = require('../index');
describe('Basic Mocha String Test', function () {
it('promise', function () {
index.GeneratePromise().then(function(value) {
console.log("promise value: ", value);
assert.equal(value, 200);
});
});
});
我的承诺
exports.GeneratePromise = new Promise(function(resolve, reject) {
https.get('https://www.google.com/', (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
console.log('status code: ', resp.statusCode)
resolve(resp.statusCode);
});
}).on("error", (err) => {
reject(err);
});
});
我希望至少有一些价值,而不是 "undefined" 返回。是测试文件中没有等待我的promise的问题
您导出的是实际的 Promise,而不是创建 Promise 的函数。因此,您不应使用 ()
。此外,it()
可以为您提供回调以告知 mocha 您的测试已完成。参见 mochas async docs。试试这个:
var assert = require('assert');
var index = require('../index');
describe('Basic Mocha String Test', function () {
it('promise', function (done) {
//index.GeneratePromise().then(function(value) {
index.GeneratePromise.then(function(value) { // Notice there is no ()
console.log("promise value: ", value);
assert.equal(value, 200);
done(); // This tells mocha your test is done
});
});
});