我正在尝试使用 sinon 和sinon-stub-promise
. 我非常接近......但我不确定它为什么不调用response.json()
我创建的方法。
function toJSON(response) {
console.log(response);
return response.json();
}
function init() {
fetch(darkWeatherUrl)
.then(toJSON)
.then(computeHours)
.then(sendAlerts)
.catch((e) => {
console.log('init error ' + e);
});
}
describe('lifx alert test', ()=> {
it('should run fetch', ()=> {
var fetch = sinon.stub().returnsPromise();
var body = {
"hourly": {
data:
[ { time: 1493413200,
icon: 'clear-day',
precipIntensity: 0,
precipProbability: 0,
ozone: 297.17 },
{ time: 1493416800,
icon: 'clear-day',
precipIntensity: 0,
precipProbability: 0,
ozone: 296.89 },
{ time: 1493420400,
icon: 'clear-day',
precipIntensity: 0,
precipProbability: 0,
ozone: 296.73 },
{ time: 1493424000,
icon: 'clear-day',
precipIntensity: 0,
precipProbability: 0,
ozone: 296.31 } ]
}
};
function json() {
return body;
}
var response = {};
response.json = json;
fetch.resolves(response);
var init = proxy('../index.js', {'node-fetch': fetch});
init();
fetch.should.have.been.called;
});
});
lifex alert test
{ json: [Function: json] }
[ { time: 1493413200,
icon: 'clear-day',
precipIntensity: 0,
precipProbability: 0,
ozone: 297.17 },
{ time: 1493416800,
icon: 'clear-day',
precipIntensity: 0,
precipProbability: 0,
ozone: 296.89 },
{ time: 1493420400,
icon: 'clear-day',
precipIntensity: 0,
precipProbability: 0,
ozone: 296.73 },
{ time: 1493424000,
icon: 'clear-day',
precipIntensity: 0,
precipProbability: 0,
ozone: 296.31 } ]
init error TypeError: response.json is not a function
â should run fetch
1 passing