茉莉花对象“没有方法”和“返回”

时间:2014-02-05 22:31:24

标签: javascript unit-testing tdd jasmine

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);
    }
}

感谢您的帮助!!!

4 个答案:

答案 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()