代码之家  ›  专栏  ›  技术社区  ›  ohadinho

命名空间“jasmine”没有导出成员“SpyObj”

  •  3
  • ohadinho  · 技术社区  · 6 年前

    我正试图为我的测试创建一个间谍对象:

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

    我最终将spy配置为 any :

     let spy: any;
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Karthick Manoharan    6 年前

    你的茉莉花版本不支持 SpyObj 在较新版本中引入的类型。

    尝试更新 jasmine-core @types/jasmine package.json 到最新的稳定版本或尝试使用 "jasmine-core": "2.8.0", @types/jasmine": "2.6.0" 工作正常,没有错误。