Привет, я новичок в javascript. Я использую emitter на функции в javascript, и у меня есть проблемы с его тестированием с использованием jasmine framework. Ниже приведена функция emitter on и код для проверки функции.
//main.js
Emitter.prototype.on = function (event, listener)
{
if (typeof this.events[event] !== 'object')
{
this.events[event] = [];
}
this.events[event].push(listener);
};
//test.js
describe('#on', () =>
{
it('should subscribe to an event name and be called when
triggered', () =>
{
Emitter.on(EVENT_NAME_ONE, spyFunction);
//Emitter.trigger(EVENT_NAME_ONE);
expect(spyFunction.calls.count()).toBe(1);
});
Вышеупомянутый тест не выполняется. Я не знаю, почему. Может кто-то, пожалуйста, помогите мне с этим. Благодарю.
Я мог бы решить эту ошибку. Мне пришлось экспортировать функцию в тесты и изменить браузер на хром в файле karma.conf.js. Теперь я получаю этот TypeError: Не могу прочитать свойство "event_name_one" undefined. Я определил
var Emitter = function () {
this.events = {};
var Event_Name_One;
} ;
export function on (event, listener) {
if (typeof this.events[event] !== 'object') {
this.events[event] = [];
}
this.events[event].push(listener);
};
и в test.js
// Testing event names
const EVENT_NAME_ONE = 'event_name_one';
describe('#on', () => {
it('should subscribe to an event name and be called when triggered', () => {
Emitter.on(EVENT_NAME_ONE, spyFunction);
Emitter.trigger(EVENT_NAME_ONE);
expect(spyFunction.calls.count()).toBe(1);
});
Я не понимаю, почему я получаю эту ошибку. Может ли кто-нибудь помочь в этом.
Ошибка говорит, что Emitter.on не определен. Смотрите эту тему.
on
определяется на экземпляре эмиттера.
class Emitter {
constructor() {
console.log('created Emitter!')
}
on(event, callback) {
console.log('on')
}
}
a = new Emitter()
=> created Emitter!
a.on()
=> on