如何监视类属性中的方法?

时间:2019-04-24 01:44:56

标签: jestjs enzyme

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 个答案:

答案 0 :(得分:1)

您可以使用.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!
  });
});