Эта строка:
module.exports = new Users();
... означает, что объект Users
будет создан, как только код будет запущен ... и будет запущен, как только user.js
будет required
.
Эта строка:
users = require('./user')
... находится вверху вашего тестового файла и эта строка:
aws.mock('DynamoDB', 'getItem', function (params, callback) {
callback(null, {Item: {email: params.Key.email.S}});
});
... находится в beforeEach
...
... это означает, что user.js
равно required
и выполняется до того, как макет был создан ... что приводит к сбою теста.
Если вы собираетесь экспортировать экземпляр Users
, вам просто нужно убедиться, что вы не require
user.js
файл в своем тесте до после , вы настроили издеваться:
var aws = require('aws-sdk-mock'),
chai = require('chai'),
path = require('path'),
input = 'test@gmail.com',
usersObj;
chai.should()
aws.setSDK(path.resolve('node_modules/aws-sdk'));
describe('All Tests', function () {
beforeEach(function () {
aws.mock('DynamoDB', 'getItem', function (params, callback) {
callback(null, { Item: { email: params.Key.email.S } });
}); // <= set up the mock first...
usersObj = require('./user'); // <= ...then require user.js
});
it('getData', function (done) {
usersObj.getData(input).then(function (res) {
res.Item.email.should.equal(input); // Success!
done();
});
});
});