0

我正在使用 Jasmine 和 Karma 对 AngularJS 应用程序进行单元测试。我目前正在进行的单元测试是一个日期服务,它将字符串解析为日期并返回一个 timezoneJS 对象。我在我的 karma.config 文件中包含了 date.js 库,并且 zoneFileBasePath 也在我的 SPA 的主应用程序页面中定义。我的 karma.config 文件中也包含了所有 Angular 应用程序文件。

我得到的第一个错误是:

请为您的区域文件目录定义一个基本路径——timezoneJS.timezone.zoneFileBasePath。

所以我在我的单元测试中包含了以下内容:

 timezoneJS.timezone.zoneFileBasePath = 'app/tz'

 timezoneJS.timezone.init({async:false})

我不明白为什么这是必要的,因为它已经定义了,但它仍然有效。

我现在收到此错误

错误:时区“美国/芝加哥”不正确,或未加载到时区注册表中。

我发现了几篇关于这个问题的帖子,我发现一个似乎对其他人有用的建议是关闭异步。我已经这样做了,但它仍然无法正常工作。

时区目录内容:

在此处输入图像描述

如您所见,它位于我在 zoneFileBasePath 声明中指定的应用程序目录中。我的测试与测试文件夹中的应用程序位于同一平面上,该文件夹进一步分为规范和模拟等。

我需要能够测试这个日期服务,无论我如何尝试构建代码,这个问题都会继续存在。如果有人可以帮助我,我将不胜感激。谢谢。

4

1 回答 1

1

TimezoneJS 需要传输层来检索时区数据文件。

默认情况下,它将与 jQuery、Zepto 或 Fleegix 一起使用。您可能只在您的单元测试中包含 jQuery,它会起作用。

我相信你async:false在使用 jQuery 时的设置是正确的。

你应该看看这个项目,它将 TimezoneJS 直接与 Angular 联系起来。您可能更容易食用。

您可能还对使用相同源数据但具有不同实现的其他时区库之一感兴趣。我在这里列出它们。

于 2013-07-15T23:03:26.790 回答