Насмешливые компоненты JavaScript - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь издеваться над следующим классом:

import EventEmitter from 'eventemitter3';

export default class BaseComponent extends EventEmitter {

constructor () {

    super();

    // Turn off memory leak warning on EventEmitter.
    /* eslint-disable no-magic-numbers */
    this.setMaxListeners(0);

    /* eslint-enable no-magic-numbers */

    this.state = {};
    this.defaultOptions = {};
}

init ($el, options) {

    this.$el = $el;
    this.options = Object.assign({}, this.defaultOptions, options);

    this.$el.data('component', this);

    this.initChildren();
    this.addAriaAttributes();
    this.addListeners();
}

initChildren () {
}

addAriaAttributes () {
}

addListeners () {
}
}

Я использую карму для тестового бегуна, который работает нормально.Я также использую жасмин для описания шагов.Я читал, что Sinon.js можно использовать для макетирования компонентов, но это выглядит совершенно иначе, чем то, как я обычно делаю это в C #.

Я думал, что мне нужно будет импортировать генератор событий и класс, который я хочумодульный тест выглядит так:

import EventEmitter from 'eventemitter3';
import BaseComponent from './base-component.js';

Затем создайте компонент и установите базовый класс следующим образом:

var baseComponent = new BaseComponent();
var emitter = new EventEmitter();

baseComponent.prototype = emitter.prototype;

Затем настройте нужные мне данные:

var data { baseComponent };
var $el { data };
var options = {};

var defaultOptions = {};
var baseComponentoptions = Object.assign({}, defaultOptions, options);

Затем создайте шпиона и вызовите init:

 it('Should set component data', () => {

    const spyFunc = sinon.spy(baseComponent, 'init');
    spyFunc($el, baseComponentoptions);
    expect(spyFunc.calledOnce).toEqual(true);

 });

Но базовый класс не устанавливается для baseComponent, и когда вызывается шпион, он жалуется на неопределенность baseComponent.Я совершенно новичок в издевательствах в JS, поэтому будьте добры:).

...