Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 茉莉花对象“;没有方法';andReturn'”;_Javascript_Unit Testing_Tdd_Jasmine - Fatal编程技术网

Javascript 茉莉花对象“;没有方法';andReturn'”;

Javascript 茉莉花对象“;没有方法';andReturn'”;,javascript,unit-testing,tdd,jasmine,Javascript,Unit Testing,Tdd,Jasmine,茉莉花初学者,茉莉花间谍的第一次尝试。我以为我是在模仿这种格式(搜索:“andReturn”),但我得到了一个我无法解决的错误: TypeError: Object function () { callTracker.track({ object: this, args: Array.prototype.slice.apply(arguments) }); return spyStrategy.exec.ap

茉莉花初学者,茉莉花间谍的第一次尝试。我以为我是在模仿这种格式(搜索:“andReturn”),但我得到了一个我无法解决的错误:

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

谢谢你的帮助

我做了一个茉莉花测试,在那里我展示了这种模拟。安德烈·图恩似乎在工作

您必须记住,它只在测试范围内被模拟。 这里有一个与你的例子,似乎通过


希望这有帮助

jasmine 2.0更改了一些间谍语法

试试这个

spyOn(数学,“随机”)和.returnValue(1)


使用and.returnValue()代替andReturn()

谢谢!实际上,我认为问题可能与我使用dist2.0有关。我在1.3.1中重新创建了精确的测试,它们工作得很好。
通过将spy与and.returnValue链接,所有对函数的调用都将返回一个特定值。
是!看起来andReturn是now and.returnValue。最好在答案中提供代码,而不仅仅是链接到文档。这是当前的2.0.0 jasmine语法
it("has a value of 1 with and return", function() {
    spyOn(Math, 'random').andReturn(1); 
    expect(Math.random()).toBe(1);
});
spyOn(Math, 'random').and.returnValue(1);