Предполагается, что x
- это внешняя библиотека, а Thing
- объект, который может быть построен от x
. Это все, завернутые в угловом службы, например, так:Mocking/шпионаж на конструкторе «x.Thing()»
app.service('thingService', function() {
var thing;
this.createThing = function(thingParam){
thing = new x.Thing(thingParam);
}
});
Моя первая попытка включения этого:
xSpy = jasmine.createSpyObj('x', ['Thing']);
spyOn(window, 'x').andReturn('xSpy');
Но он все еще жалуется, что x() method does not exist
на той линии, которая Thing
должна быть построена
Но это, кажется, не разрешить использование 'x' в коде, который проходит тестирование (' createThing' метод обслуживания). Когда я добавляю свой код в тест, я получаю 'ReferenceError: не могу найти переменную: x', когда я запускаю тест. –
Я предположил, что вы хотите шпионить« вещь ». Если вы хотите заменить целое 'x', вы можете перейти на один уровень вверх и запомнить' x' и заменить 'window.x' (в случае, если' x' действительно является глобальным). Если 'x' не является глобальным, просим пояснить ваш пример. Указанная вами ошибка указывает на это. –