Как шпионить за методом в свойстве класса? - PullRequest
1 голос
/ 24 апреля 2019
import React, { Component } from 'react';
import { shallow } from 'enzyme';

class App extends Component {
    a = {
        func: () => 1
    };

    render () {
        return null;
    }
}

describe('<App>', () => {
    test('func()', () => {
        const app = shallow(<App />),
              func_spy = jest.spyOn(???);
    });
});

Я хочу шпионить за func функцией в a свойстве класса. Могу ли я добиться этого, используя метод spyOn или что-то еще? Заранее благодарю за ответ.

1 Ответ

1 голос
/ 24 апреля 2019

Вы можете получить экземпляр класса, используя .instance и использовать его для создания шпиона:

import React, { Component } from 'react';
import { shallow } from 'enzyme';

class App extends Component {
  a = {
    func: () => 1
  };

  render() {
    return null;
  }
}

describe('<App>', () => {
  test('func()', () => {
    const app = shallow(<App />);
    const instance = app.instance();  // <= get the instance
    const func_spy = jest.spyOn(instance.a, 'func');  // <= spy on instance.a.func

    instance.a.func();

    expect(func_spy).toHaveBeenCalled();  // Success!
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...