Jasmine的初学者,与Jasmine Spies的第一次尝试。我以为我正在模仿格式displayed here(搜索:“和返回”),但我收到一个我无法解决的错误:
TypeError: Object function () {
callTracker.track({
object: this,
args: Array.prototype.slice.apply(arguments)
});
return spyStrategy.exec.apply(this, arguments);
} has no method 'andReturn'
不知道我做错了什么。这是我的规格:
describe('Die', function() {
it('returns a value when you roll it', function() {
var die = Object.create(Die);
spyOn(Math, 'random').andReturn(1);
expect(die.roll()).toEqual(6);
});
});
和相应的JS:
var Die =
{
roll: function() {
return Math.floor(Math.random() * 5 + 1);
}
}
感谢您的帮助!!!
答案 0 :(得分:31)
jasmine 2.0改变了一些间谍语法。 jasmine 2.0 docs
spyOn(Math, 'random').and.returnValue(1);
答案 1 :(得分:11)
试试这个
spyOn(数学,'随机')。and.returnValue(1);
答案 2 :(得分:2)
我做了一个茉莉花测试,在那里我展示了这种模拟。并且返回似乎正在起作用。 http://jsfiddle.net/LNWXn/
it("has a value of 1 with and return", function() {
spyOn(Math, 'random').andReturn(1);
expect(Math.random()).toBe(1);
});
你必须记住,它只是嘲笑测试的范围。 这是一个似乎通过你的例子。 http://jsfiddle.net/LNWXn/2/
希望这有帮助!
答案 3 :(得分:1)
使用andReturn()
的and.returnValue()