Javascript 茉莉花规格产生不同于执行时的随机数
我有一个Jasmine测试失败了,因为正在生成一个随机数,而这个随机值对于执行和规范是不同的Javascript 茉莉花规格产生不同于执行时的随机数,javascript,ruby-on-rails,testing,tdd,jasmine,Javascript,Ruby On Rails,Testing,Tdd,Jasmine,我有一个Jasmine测试失败了,因为正在生成一个随机数,而这个随机值对于执行和规范是不同的 fetch: function(options) { if(typeof options === "undefined") { options = {}; } if(typeof options.data === "undefined") { options.data = {}; } options.data.id = this.j
fetch: function(options) {
if(typeof options === "undefined") {
options = {};
}
if(typeof options.data === "undefined") {
options.data = {};
}
options.data.id = this.journalId;
options.data.random = Math.floor(Math.random()*10000);
col.prototype.fetch.call(this, options);
}
下面的测试失败,因为Math.floor(Math.random()*10000)
正在生成不同的值
it("should call parent fetch with default options", function() {
this.collection.fetch();
expect(this.fetchSpy).toHaveBeenCalledWith({
data: {
id: 1,
random: Math.floor(Math.random()*10000)
}
});
});
对于生成随机数的情况,是否有办法使我的测试通过?您可以模拟
Math.random
函数。茉莉花2:
茉莉花1:
it(“应使用默认选项调用父获取”,函数(){
jasmine.spyOn(数学,“随机”).andReturn(0.1);
this.collection.fetch();
期待(这个。fetchSpy)。已经被收集({
数据:{
id:1,
随机:Math.floor(Math.random()*10000)
}
});
});
如果要模拟一系列“随机”值,可以使用:
spyOn(Math, 'random').and.returnValues(0.1, 0.2, 0.3, 0.4);
请注意,您必须在returnValues中添加s,否则它将不起作用
spyOn(Math, 'random').and.returnValues(0.1, 0.2, 0.3, 0.4);