用存根测试承诺
Testing promise with stub
我正在尝试使用 sinon 存根对 chai 进行一些测试。问题是,我正在像这样存根并兑现我的承诺。
let fetchedStub;
beforeEach(() => {
fetchedStub = sinon.stub(global, 'fetch');
fetchedStub.resolves({ json: () => { body: 'json' } });
});
然后我正在测试我的数据是否正确返回
it('should return the JSON data from the promise', () => {
const result = search('test');
result.then((data) => {
expect(data).to.be.eql({ body: 'json' });
});
});
但是我没有通过测试,而是
TypeError: Cannot read property 'then' of undefined
我是不是做错了什么我的承诺?我想我需要一些光。
编辑:这是搜索功能。
export const search = (query) => {
fetch(`https://api.spotify.com/v1/search?q=${query}&type=artist`)
.then(data => data.json());
};
您的 search
箭头函数没有 return 任何东西,因此在您的测试中 result
未定义,因此出现错误消息。
您应该 return 您的获取结果:
export const search = (query) => {
// return something
return fetch(`url`).then(data => data.json());
};
您 可能 对箭头函数 shorthand 语法感到困惑,它自动 return单个表达式的结果,前提是它 不是 包裹在大括号中:
export const search = (query) => fetch(`url`).then(data => data.json()); // no curly braces after the arrow
我正在尝试使用 sinon 存根对 chai 进行一些测试。问题是,我正在像这样存根并兑现我的承诺。
let fetchedStub;
beforeEach(() => {
fetchedStub = sinon.stub(global, 'fetch');
fetchedStub.resolves({ json: () => { body: 'json' } });
});
然后我正在测试我的数据是否正确返回
it('should return the JSON data from the promise', () => {
const result = search('test');
result.then((data) => {
expect(data).to.be.eql({ body: 'json' });
});
});
但是我没有通过测试,而是
TypeError: Cannot read property 'then' of undefined
我是不是做错了什么我的承诺?我想我需要一些光。
编辑:这是搜索功能。
export const search = (query) => {
fetch(`https://api.spotify.com/v1/search?q=${query}&type=artist`)
.then(data => data.json());
};
您的 search
箭头函数没有 return 任何东西,因此在您的测试中 result
未定义,因此出现错误消息。
您应该 return 您的获取结果:
export const search = (query) => {
// return something
return fetch(`url`).then(data => data.json());
};
您 可能 对箭头函数 shorthand 语法感到困惑,它自动 return单个表达式的结果,前提是它 不是 包裹在大括号中:
export const search = (query) => fetch(`url`).then(data => data.json()); // no curly braces after the arrow