使用sinon js库模拟测试代码使用的现有功能

时间:2018-10-18 21:39:48

标签: javascript unit-testing sinon

我是js现代编程和测试的新手,所以我可能使用了不正确的术语。我正在使用React和ES6语法,并在测试中使用了jest和sinon。

我想在代码中模拟/存根/替换现有函数,以便不调用它并返回预定结果。

我将在此处添加要测试的代码

import get_products from './products';

function fetchProducts() {

some_code()

get_products()

some_more_code()

}

在我的测试中

import 'fetchProducts' from '../main';

test('fetchProducts', () => {

fetchProducts();

})

我想做的是模拟get_products()函数,因此实际上并未调用它,而是在测试fetchProducts()函数时返回了预定的结果。 我看了几天的sinon帮助,但找不到答案。

谢谢!

1 个答案:

答案 0 :(得分:0)

我没有测试过,但应该可以正常工作。

before(function() {
    sinon.stub(get_products).yields(null, JSON.stringify({ hello: 'World!' }));
});

it('get_products should be called', function() {
    fetchProducts();
    get_products.called.should.be.equal(true);
});

让我知道它是否有效。