Я уже установил рабочую функцию с использованием API Twilio. Функция работает, когда я вводим параметры через интерфейс, но когда я запускаю тест в Mocha, он не сообщает, что функция не определена. У меня также есть еще один тест в Mocha, который проходит перед этим тестом и проходит первый тест.Функция узла работает, но не определена при запуске через Mocha
twilioClient.js:
var config = require('./config');
var client = require('twilio')(config.accountSid, config.authToken);
sendSms = function(to, message) {
client.messages.create({
body: message,
to: to,
from: config.sendingNumber
// mediaUrl: 'http://www.yourserver.com/someimage.png'
}, function(err, data) {
if (err) {
console.error('Could not notify administrator');
console.error(err);
return 'Could not notify administrator';
} else {
console.log('Administrator notified');
return 'Administrator notified';
}
});
};
module.exports.sendSms = sendSms;
Мой indexSpec.js файл:
var chai= require('chai');
var expect = require('chai').expect;
var twilioNotifications = require('./Send Text/js/twilioNotifications');
var cfg = require('./Send Text/js/config.js');
var twilio = require('twilio');
var tClient = require('./Send Text/js/twilioClient.js');
describe('TwilioVars', function() {
it('returns true if variables are not null nor undefined', function() {
var tVars = cfg.twilioVars(cfg.reqConfig);
expect(tVars).to.equal(true);
})
})
describe('MsgSent', function() {
it('confirms if message can be sent', function() {
var receiver = <my number>;
var message = 'My message';
var sentMsg = tClient.sendSms(receiver, message);
expect(sentMsg).to.equal('Administrator notified');
})
})
Мой config.js файл:
var cfg = {};
cfg.accountSid = <some string>;
cfg.authToken = <some string>;
cfg.sendingNumber = <some string>;
var requiredConfig = [cfg.accountSid, cfg.authToken, cfg.sendingNumber];
// For testing:
cfg.reqConfig = requiredConfig;
cfg.twilioVars = function(arr) {
if (arr[0] && arr[1] && arr[2]) {
return true;
}
return false;
};
// End testing
var isConfigured = requiredConfig.every(function(configValue) {
return configValue || false;
});
if (!isConfigured) {
var errorMessage =
'TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, and TWILIO_NUMBER must be set.';
throw new Error(errorMessage);
}
// Export configuration object
module.exports = cfg;
Любое понимание, почему функция работает, но почему испытание терпит неудачу будет весьма оценено.
P.s. Ошибка ниже:
1) MsgSent confirms if message can be sent:
AssertionError: expected undefined to equal 'Administrator notified'
at Context.<anonymous> (C:\Users\James Bradley\code_tests\twilio\twilio_test\indexSpec.js:22:22)
at callFn (C:\Users\James Bradley\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:326:21)
at Test.Runnable.run (C:\Users\James Bradley\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:319:7)
at Runner.runTest (C:\Users\James Bradley\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:422:10)
at C:\Users\James Bradley\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:528:12
at next (C:\Users\James Bradley\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:342:14)
at C:\Users\James Bradley\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:352:7
at next (C:\Users\James Bradley\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:284:14)
at Immediate._onImmediate (C:\Users\James Bradley\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:320:5)
Вы можете создавать трассировки стека? –
Я понял это. Придется создать другую функцию async, чтобы вернуть переменную, которая была либо «Администратор уведомлен», либо «Не удалось уведомить администратора». –