Подтвердить что ты не робот

Жасминовый объект "не имеет метода 'иReturn'"

Начинающий с Жасмин, очень первая попытка с Jasmine Spies. Я думал, что я подражал формату показанному здесь (поиск: "andReturn" ), но я получаю сообщение об ошибке, которое я не могу решить

TypeError: Object function () {
        callTracker.track({
          object: this,
          args: Array.prototype.slice.apply(arguments)
        });
        return spyStrategy.exec.apply(this, arguments);
      } has no method 'andReturn'

Не знаю, что я делаю неправильно. Здесь мой Spec:

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

Спасибо за помощь!!!

4b9b3361

Ответ 1

Жасмин 2.0 изменил некоторые синтаксисы шпиона. jasmine 2.0 docs

spyOn(Math, 'random').and.returnValue(1);

Ответ 2

попробуйте это

spyOn (Math, 'random'). and.returnValue(1);

Ответ 3

Я сделал тест на жасмин, где я показываю такой макет. andReturn, похоже, работает. 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/

Надеюсь, это помогло!

Ответ 4

использовать and.returnValue() insted ofRemurn()