Node.js 如何使用jasmine节点监视日期
根据官方文件中给出的例子 它报告jasmine.clock不是一个函数。我在我的项目中使用了以下依赖项Node.js 如何使用jasmine节点监视日期,node.js,jasmine,Node.js,Jasmine,根据官方文件中给出的例子 它报告jasmine.clock不是一个函数。我在我的项目中使用了以下依赖项 "devDependencies": { "jasmine": "^2.5.2", "jasmine-node": "^1.14.5" } 我还试图模拟Date对象。但由于我在节点中而不是在浏览器上,所以我没有找到/获取窗口来模拟任何方法。首先需要安装 然后进行如下测试: describe("Mocking the Date object", function ()
"devDependencies": {
"jasmine": "^2.5.2",
"jasmine-node": "^1.14.5"
}
我还试图模拟Date对象。但由于我在节点中而不是在浏览器上,所以我没有找到/获取窗口来模拟任何方法。首先需要安装
然后进行如下测试:
describe("Mocking the Date object", function () {
it("mocks the Date object and sets it to a given time", function () {
var baseTime = new Date(2013, 9, 23);
jasmine.clock().install();
jasmine.clock().mockDate(baseTime);
jasmine.clock().tick(50);
expect(new Date().getTime()).toEqual(baseTime.getTime() + 50);
});
});
希望能有所帮助。我发现我在使用非官方的茉莉花图书馆。所以我应该使用“jasmine核心”而不是“jasmine节点”来获得最新jasmine版本的支持。然而,它仍然未能模拟日期
所以我分离了一个函数来返回日期。然后,
我导出了该函数,以便可以对其进行模拟。我使用jasmine的spyOn
模拟日期函数的行为
我发现了一个npm库rewire
,它有助于访问nodejs模块的私有变量或方法。因此,它也可以用来spyOn
date函数,而不是仅仅因为模仿而导出它
链接的npm包声明(重点是mine):“Jasmine v1.3的模拟日期。对于v2.x,使用Jasmine.clock().mockDate()。”正如我所说的Jasmine版本,我希望Jasmine.clock()
应该可用。
describe("Mocking the Date object", function () {
it("mocks the Date object and sets it to a given time", function () {
var baseTime = new Date(2013, 9, 23);
jasmine.clock().install();
jasmine.clock().mockDate(baseTime);
jasmine.clock().tick(50);
expect(new Date().getTime()).toEqual(baseTime.getTime() + 50);
});
});