Javascript 重构包含大量重复代码的单元测试。
我正在为我编写的一个函数编写一些测试:当前代码按照我的预期工作,但现在我需要擦干代码并进行重构。 下面您将看到我编写的单元测试: 测试“檀香山的本地化日期”,断言=>{ 常量存根=sinon.stubconstantDate,'getTimezoneOffset',=>{ 返回“600”; }; console.log'timeSet',timeSet; assert.StreetQualtimet,“2017-07-29T14:00:00.000Z”,“这里需要一条消息”; 恢复; }; 测试“旧金山日期和时间”,断言=>{ 常量存根=sinon.stubconstantDate,'getTimezoneOffset',=>{ 返回'420'; }; assert.RightQualtimet,“2017-07-29T17:00:00.000Z”; 恢复; }; 测试“悉尼时间”,断言=>{ 常量存根=sinon.stubconstantDate,'getTimezoneOffset',=>{ 返回'-600'; }; assert.StreetQualtimet,“2017-07-30T10:00:00.000Z”,“预计悉尼时间为上午10点”; 恢复;Javascript 重构包含大量重复代码的单元测试。,javascript,testing,timezone,Javascript,Testing,Timezone,我正在为我编写的一个函数编写一些测试:当前代码按照我的预期工作,但现在我需要擦干代码并进行重构。 下面您将看到我编写的单元测试: 测试“檀香山的本地化日期”,断言=>{ 常量存根=sinon.stubconstantDate,'getTimezoneOffset',=>{ 返回“600”; }; console.log'timeSet',timeSet; assert.StreetQualtimet,“2017-07-29T14:00:00.000Z”,“这里需要一条消息”; 恢复; }; 测
}; 一个建议是使用部分函数。正如您所知,sinon.stub中的前两个参数对于每个单元测试都是相同的。因此,在执行单元测试之前,我们可以创建一个函数
const timezoneOffsetStub = (callback) => {
return sinon.stub(constantDate, 'getTimezoneOffset', callback);
}
这假设constantDate是一个全局定义的变量
所以现在要在每个单元测试中存根,我们只需要定义不同的回调是什么
QUnit.test('Localized Date in Honolulu', assert => {
const stub = timezoneOffsetStub(() => '600');
...
});
QUnit.test('San Francisco Date and Time', assert => {
const stub = timezoneOffsetStub(() => '420');
...
});