Пространство имен 'jasmine' не имеет экспортированного члена 'SpyObj' - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь создать шпионский объект для своих тестов:

let spy: jasmine.SpyObj<GeneralService>;

К сожалению, я получаю эту ошибку при запуске ng test:

Namespace 'jasmine' has no exported member 'SpyObj'

Кроме того, WebStorm помечает SpyObj как неразрешенную переменную.

Вот devDependencies из моего package.json:

"devDependencies": {
    "@angular/cli": "1.7.3",
    "@types/jasmine": "2.5.36",
    "@types/node": "7.0.27",
    "jasmine": "~2.4.1",
    "jasmine-core": "~2.4.1",
    "karma": "^1.7.1",
    "karma-chrome-launcher": "^2.2.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.1.1",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-phantomjs-launcher": "^1.0.2",
    "lodash": "4.16.2",
    "ts-node": "1.3.0",
    "tslint": "^3.15.1",
    "typescript": "2.6.2"
  }

ОБНОВЛЕНИЕ:

Я ссылаюсь на документы по угловому тестированию: https://angular.io/guide/testing

let masterService: MasterService;
let valueServiceSpy: jasmine.SpyObj<ValueService>;

beforeEach(() => {
  const spy = jasmine.createSpyObj('ValueService', ['getValue']);

  TestBed.configureTestingModule({
    // Provide both the service-to-test and its (spy) dependency
    providers: [
      MasterService,
      { provide: ValueService, useValue: spy }
    ]
  });
  // Inject both the service-to-test and its (spy) dependency
  masterService = TestBed.get(MasterService);
  valueServiceSpy = TestBed.get(ValueService);
});

В итоге я настраиваю шпиона как any:

 let spy: any;

1 Ответ

0 голосов
/ 01 марта 2019

Ваша версия с жасмином не поддерживает тип SpyObj, который был представлен в более поздней версии.

Попробуйте обновить jasmine-core и @types/jasmine с package.json допоследняя стабильная версия или попытка с "jasmine-core": "2.8.0", @types/jasmine": "2.6.0" должна работать без ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...