【发布时间】:2017-11-13 23:13:36
【问题描述】:
tl;dr 我需要测试我的方法是否会在成功加载 Google 电子表格时向电子表格添加一行。
saveDataToGoogleSpreadSheet(conversationData){
return new Promise((resolve, reject) => {
Spreadsheet.load(this.getGoogleAPISettings(), (err, spreadsheet) => {
if (err) {
return reject(err);
}
return spreadsheet.receive((receivedError, rows, info) => {
if (receivedError) {
return reject(receivedError);
}
const rowData = this.getSpreadsheetRowData(conversationData, info.totalRows);
spreadsheet.add(rowData);
return spreadsheet.send(sendError => (sendError ? reject(sendError) : resolve()));
});
});
});
}
我测试了函数的案例一和案例二(两个第一个错误),但我无法为最后一个,我们在电子表格中添加一行的成功案例。
我需要一些关于测试结构的帮助,或者关于我的测试如何的提示。
编辑:之前的测试是如何进行的
it('should add a row to a Google Spreadsheet', (done) => {
nock('https://spreadsheets.google.com')
.post('/feeds/cells/1ZOd7Sysc-JNa-D5AHb7ZJkwBRMBGaeKpzIwEl7B8RbQ/1/private/full/batch')
.replyWithError({ message: 'abcde' });
api.saveDataToGoogleSpreadSheet({ data: 'some data' })
.then(() => done(new Error('should not have made the call')))
.catch((err) => {
expect(err).to.equal('Error Reading Spreadsheet');
done();
});
}).timeout(4000);
【问题讨论】:
-
由于您没有告诉我们该功能必须做什么,所以没有人可以告诉您如何测试它。
-
@Raedwald 我同意这个问题的信息有点短,但它包含的足够多。他问他如何测试
spreadsheet.add方法是否在spreadsheet.receive方法成功时被调用。 -
@laurent miller:您能说明一下您是如何测试前两个案例的吗?我试图在我的问题中猜测它,并且我假设您已经使用实际的网络调用进行了测试。这是正确的,如果不是,如何?如果它没有以某种方式回答您的问题,您也可以对答案发表评论。
-
it('应该在 Google 电子表格中添加一行', (done) => { nock('spreadsheets.google.com') .post('/feeds/cells/1ZOd7Sysc-JNa-D5AHb7ZJkwBRMBGaeKpzIwEl7B8RbQ/1 /private/full/batch') .replyWithError({ message: 'abcde' }); api.saveDataToGoogleSpreadSheet({ data: 'some data' }) .then(() => done(new Error('不应该做出调用'))) .catch((err) => { expect(err).to.equal('读取电子表格时出错'); done(); }); }).timeout(4000);这就是我测试它们的方式,抱歉格式奇怪,无法更改。
-
@oligofren 感谢您的帮助伙伴,我将完全使用您提供给我的信息。我赞成你的回答,但我认为这不会改变公开显示的分数,因为我有声誉
标签: node.js unit-testing mocha.js sinon