我想验证各种日期字段是否被正确更新,但我不想在预测< code>new Date()何时被调用上浪费时间。我如何剔除日期构造函数?
import sinon = require('sinon');
import should = require('should');
describe('tests', () => {
var sandbox;
var now = new Date();
beforeEach(() => {
sandbox = sinon.sandbox.create();
});
afterEach(() => {
sandbox.restore();
});
var now = new Date();
it('sets create_date', done => {
sandbox.stub(Date).returns(now); // does not work
Widget.create((err, widget) => {
should.not.exist(err);
should.exist(widget);
widget.create_date.should.eql(now);
done();
});
});
});
如果相关,这些测试在节点应用程序中运行,我们使用TypeScript。
当我正在寻找解决方案时,我发现了这个问题 如何模拟 Date
构造函数只有.我想在每个测试中使用相同的日期,但要避免模拟设置超时
。西农在内部使用[lolex][1]我的解决方案是提供对象作为参数给正弦:
let clock;
before(() => {
clock = sinon.useFakeTimers({
now: new Date(2019, 1, 1, 0, 0),
shouldAdvanceTime: true,
toFake: ["Date"],
});
})
after(() => {
clock.restore();
})
您可以在[lolex][1]API[1]中找到其他可能的参数:https://github.com/sinonjs/lolex#api-参考
sinon。useFakeTimers()
由于某种原因破坏了我的一些测试,我不得不存根Date.now()
sinon.stub(Date, 'now').returns(now);
在这种情况下,在代码中而不是const now=new Date();
你可以做
const now = new Date(Date.now());
或者考虑使用时刻库处理与日期相关的内容。短截距很容易。
我想您需要useFakeTimers
功能:
var now = new Date();
var clock = sinon.useFakeTimers(now.getTime());
//assertions
clock.restore();
这是普通的JS。一个工作的TypeScript/JavaScript示例:
var now = new Date();
beforeEach(() => {
sandbox = sinon.sandbox.create();
clock = sinon.useFakeTimers(now.getTime());
});
afterEach(() => {
sandbox.restore();
clock.restore();
});
我正在尝试使用typescript、mocha、sinon和chai http为我的express路由器编写一个集成测试。这个路由器使用我编写的自定义中间件,它检查头中的JWT。 理想情况下,我想存根我的authMiddleware,这样我就可以控制它的行为,而不必为每个测试用例提供有效/无效的JWT。 当我尝试在测试中存根时,我意识到Express使用的实际实现,而不是模拟的实现。 在模拟aut
我想知道我是否缺少关于sinon.js的任何信息,我尝试使用sinon.stub()。返回和收益率,但无法得到结果。任何指针都将有所帮助。 我有一个模块,它调用另一个从数据库返回值的模块 我使用mocha作为测试框架,也使用sinon。我面临的问题是,当我创建一个users.findOne存根以返回一个值时,控件不会到达我的else if(用户)条件。 我的单元测试案例如下
如果我已经通过< code > var a = sinon . createstuinstance(my contractor)创建了一个实例。 如何替换其中一个存根函数,如 。 我这样做的主要原因是想实现这个提到的多个回调解决方法
问题很简单。如何将列添加到表中,但仅当列不存在时?我在这里只找到了如何检查列是否存在的解决方案。
我在获取一个sinon存根以返回/解析另一个sinon存根时遇到问题。我正在使用西农、柴、柴和摩卡。 我正在按顺序执行许多异步任务,我想测试的代码看起来像这样: 我尝试为此创建存根的尝试如下所示: “saveit”方法在Terminal.prototype,这就是为什么我需要在那里存根它。当我尝试运行它时,我收到错误消息: 在线上: 但如果我在控制台中转储终端对象,它看起来很好,就像任何其他存根对
很抱歉,如果这是一个简单的问题,我对Node和Sinon相对较新。我正在努力弄清楚如何断言在Nodejs中调用了嵌套异步函数。 我用的是摩卡、柴、西农和请求(https://github.com/request/request)但我想我缺少了一些关于存根部分的基本信息。 my_app.js内的例子- 测试内部。我试图取消对请求的调用,并提供一些虚拟数据以返回。但我在创建存根的行中不断收到一个错误“