簡體   English   中英

運行 ng test 時缺少聲明文件

[英]Declaration file missing when running ng test

我最近開始研究現有的 Angular 項目 單元測試已經中斷了很長一段時間。 不幸的是,由於對聲明文件中定義的 object 的引用錯誤,我無法讓它們運行。 此聲明文件位於項目的根目錄中。 在運行時,實際的庫是從我們的開發服務器加載的,一切正常。

然而,在運行ng test時,Jasmine 抱怨找不到引用:

    ReferenceError: SomeObject is not defined
        at <Jasmine>
        at MyService.getDetails (http://localhost:9876/_karma_webpack_/src/app/MyService.service.ts:196:33)

這是正在運行的應用程序的 tsconfig,運行良好:

{
  "extends": "../tsconfig.base.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "baseUrl": "./",
    "experimentalDecorators": true,
    "types": []
  },
  "files": [
    "main.ts",
    "polyfills.ts",
    "someobject.d.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}

測試配置類似,但出現上述錯誤:

{
  "extends": "../tsconfig.base.json",
  "compilerOptions": {
    "outDir": "../out-tsc/spec",
    "baseUrl": "./",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "someobject.d.ts",
    "polyfills.ts",
    "test.ts"
  ],
  "include": [
    "**/*.spec.ts",
    "**/*.d.ts"
  ]
}

someobject.d.ts 文件位於項目的根目錄,與 polyfills.ts 和 main.ts 處於同一級別。

這只是我從事的第二個 Angular 應用程序,所以我在這方面的經驗並不多。 也是第一次遇到TypeScript聲明文件。 我在網上找到的大多數資源都是關於處理通過 npm 為 lodash 等庫分發的聲明文件。 我發現幾乎沒有信息可以在這樣的項目中使用聲明文件。

我正在從這里尋找一些指向 go 的正確方向的指針。

顯然,我編輯了 class 和文件名,因為我不能隨意逐字分享源代碼。

在嘗試了幾件事之后,我通過添加實際庫來解決問題,並將其僅包含在 angular.json 中進行測試:

"test": {
    "builder": "@angular-devkit/build-angular:karma",
    "options": {
        ...
        "scripts": [
            "someobject.js"
        ],
        ....
    }
}

這樣,腳本在測試時可用,但不包含在由外部服務提供的生產環境中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM