【问题标题】:Sinon Stub function in another functionSinon Stub 函数在另一个函数中
【发布时间】:2017-03-23 14:11:36
【问题描述】:

所以我是在用 Mocha+Enzyme+Sinon 测试 React 应用程序。我正在尝试使用 if 语句测试一个函数,其中调用了另一个函数。 我的目标是输入 if 语句,但存根第二个函数调用。这是代码:

    onSearchChange = ({value}) => {
    const port = '/search-users?search_q=';
    const path = [port, value].join('');

    if (value.length >= 2 && value.length <= 5) {
        this.getUsers(path, (array) => {
            this.setState({ suggestions: fromJS(array) })
        });
    }
};

所以我想输入 if 语句,但不调用 getUsers() 函数。我怎样才能做到这一点? 我正在像这样监视 onSearchChange():

const wrapper = shallow(<ContentEditor />);
const spy = sinon.spy(wrapper.instance(), 'onSearchChange');

期待听到,谢谢!

【问题讨论】:

  • 你不应该在你测试的对象上模拟或存根方法。在您的情况下,我假设 getUser 发出一些 ajax 请求,所以存根发出请求而不是操纵您测试的类。

标签: reactjs mocha.js sinon stub enzyme


【解决方案1】:

我认为我们可以通过这种方式在您正在测试的组件中存根函数。

sinon.stub(ContentEditor.prototype, 'getUsers')

并像这样测试它

expect(ContentEditor.prototype.getUsers.called).to.be.true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 2021-09-04
    • 2018-12-31
    • 1970-01-01
    • 2015-03-30
    相关资源
    最近更新 更多