Я генерирую идентификационный номер (например, 47362) через веб-сервис RESTful. Этот идентификатор зависит от двух строковых параметров. После того как идентификатор сгенерирован, он присваивается переменной с именем instance
. Эта функция записывается в виде одноэлементного шаблона в файле generateID.js
:
//generateID.js
let Generator = require('./generator');
let GenerateID = (function () {
let instance;
return {
getInstance: function (string1, string2) {
if (!instance) {
instance = Generator.generate(string1, string2);
}
return instance;
}
};
})();
module.exports = GenerateID;
Я хочу поделиться этой переменной с различными файлами тестовых спецификаций, например, такими:
//test1.js
let expect = require('chai').expect;
let Generator = require('../../generator/generator');
let GenerateID = require('../../generator/generateID');
let TS = 'Test Suite';
let T = 'Me';
let TC = 'My First Test';
let step1 = 'step 1';
let step2 = 'step 2';
let ID = GenerateID.getInstance(TS, T);
describe(TC, function() {
it(step1, function() {
let result = Generator.add(2, 1);
Generator.log(ID, step1, result);
expect(result).to.equal(true);
});
it(step2, function() {
let result = Generator.add(2, 2);
Generator.log(ID, step2, result);
expect(result).to.equal(true);
});
});
//test2.js
let expect = require('chai').expect;
let Generator = require('../../generator/generator');
let GenerateID = require('../../generator/generateID');
let TS = 'Test Suite';
let T = 'Me';
let TC = 'My Second Test';
let step1 = 'step 1';
let step2 = 'step 2';
let ID = GenerateID.getInstance(TS, T);
describe(TC, function() {
it(step1, function() {
let result = Generator.sub(4, 2);
Generator.log(ID, step1, result);
expect(result).to.equal(true);
});
it(step2, function() {
let result = Generatorsub(9, 4);
Generator.log(ID, step2, result);
expect(result).to.equal(true);
});
});
Когда это выполняется на моем компьютере, два файла JS получают два разных идентификатора.
Эта логика не правильная? Разве это не правильный способ написать и поделиться синглтоном? Как я могу исправить свой код так, чтобы оба файла JS получили одинаковый идентификатор?