Это странно. В следующем коде я пытался передать разные аргументы методу Get2, но ни один из них не работает, даже с определенными типами. Вы хоть представляете, что может происходить?
ОШИБКА
Spy 'PictureService.get2' received a call with arguments [ '', undefined ] but all configured strategies specify other arguments.
КОД
СПЕЦ
let pictureService: jasmine.SpyObj<PictureService>
beforeEach(waitForAsync(() => {
pictureService = jasmine.createSpyObj('PictureService', ['Get1', 'Get2']);
pictureService.get1.and.returnValue(of(value1));
pictureService.get2.withArgs('string1', 'string2').and.returnValue(of('string3'));
......
ИЛИ
pictureService.get2.withArgs('string1', null).and.returnValue(of('string3'));
ИЛИ
pictureService.get2.withArgs('string1', undefined).and.returnValue(of('string3'));
ИЛИ
let val:any
pictureService.get2.withArgs('string1', val).and.returnValue(of('string3'));
ТС
this.picture.get2('string1', 'string2').subscribe(
response => {
if (response) {
this.image = 'data:image/jpg;base64,' + response;
}
},
.......
@ Лунатик. Но я не использую конкретно эту функцию в своем файле SPEC. Это определяется в TS, как я показываю вам, и я определяю шпиона, как я показываю вам. Я не могу понять, где я вызываю эту функцию, передавая '' и undefined в качестве параметров.....
Впервые вижу withArgs
, обычно использую callFake
.
Если вы всегда собираетесь возвращать одно и то же значение, вы можете изменить withArgs
на returnValue
.
pictureService.get2.and.returnValue(of('string3'));
Если вам нужна гибкость с аргументами, вы можете попробовать использовать callFake
.
pictureService.get2.withArgs('string1', 'string2').and.callFake((string1, string2) => {
if (string1 && string2) {
return of('string3');
}
return of('string4');
});
Я нахожу callFake
более гибким с аргументами.
похоже, когда ваша функция
get2
вызывается в файле вашего компонента, она получает аргументы''
(пустая строка) иundefined
, что не является случаем, когда вы «зарегистрированы» с помощьюwithArgs()
. Вам нужно выяснить, почему ваша функция получает те аргументы, которые вы (предположительно) не ожидаете