Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重构包含大量重复代码的单元测试。_Javascript_Testing_Timezone - Fatal编程技术网

Javascript 重构包含大量重复代码的单元测试。

Javascript 重构包含大量重复代码的单元测试。,javascript,testing,timezone,Javascript,Testing,Timezone,我正在为我编写的一个函数编写一些测试:当前代码按照我的预期工作,但现在我需要擦干代码并进行重构。 下面您将看到我编写的单元测试: 测试“檀香山的本地化日期”,断言=>{ 常量存根=sinon.stubconstantDate,'getTimezoneOffset',=>{ 返回“600”; }; console.log'timeSet',timeSet; assert.StreetQualtimet,“2017-07-29T14:00:00.000Z”,“这里需要一条消息”; 恢复; }; 测

我正在为我编写的一个函数编写一些测试:当前代码按照我的预期工作,但现在我需要擦干代码并进行重构。 下面您将看到我编写的单元测试:

测试“檀香山的本地化日期”,断言=>{ 常量存根=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点”; 恢复;
}; 一个建议是使用部分函数。正如您所知,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');
  ...
});