Модульное тестирование в браузере для NativeScript не выполняется из-за .tns. файлы - PullRequest
0 голосов
/ 09 января 2020

У меня есть проект Nativescript со вкусом Angular, который должен быть протестирован с "vanila" Jasmine, в браузере (а не в мобильном телефоне) с ng test.

По умолчанию с "голым" тесты, это работает. Но проблема в том, что если я пытаюсь протестировать / импортировать что-либо, у которого есть альтернатива ".tns", в некоторых случаях он загружается, и сборка завершается неудачно.

Моя проблема похожа на эту ветку , но там не было описано хорошее решение.

Так, например: у меня есть два файла:

app.component.tns.ts
app.component.ts

, и я пытаюсь импортировать его для тестирования в app.component.spec.ts:

import {AppComponent} from "@src/app/app.component";

он загружает .tns., сборка завершается неудачно, так как не может загрузить библиотеки c, определяемые мобильными устройствами.

     ERROR in ./src/app/app.component.tns.ts
Module not found: Error: Can't resolve 'nativescript-ui-sidedrawer' in '/home/..../src/app'
resolve 'nativescript-ui-sidedrawer' in '/home/...../src/app'
  Parsed request is a module
  using description file: /home/...../src/package.json (relative path: ./app)
    Field 'browser' doesn't contain a valid alias configuration
    resolve as module

    ...
     @ ./src/app/app.component.tns.ts 25:35-72
     @ ./src/app/app.module.spec.ts
     @ ./src sync \.spec\.ts$
     @ ./src/test.ts

есть ли решение "удалить" .tns. файлы, как если бы я запускал простую ng serve?

update : Мой tsconfig.spec.json должен исключать эти файлы, но он также не работает ...

  "exclude": [
    "**/*.tns.ts",
    "**/*.android.ts",
    "**/*.ios.ts"
  ]
}

1 Ответ

0 голосов
/ 09 января 2020

похоже, проблема была в tsconfig. json. В частности, эта часть:

"compilerOptions": {
  ...
      "paths": {
          "@src/*": [
              "src/*.android.ts",
              "src/*.ios.ts",
              "src/*.tns.ts",
              "src/*.web.ts",
              "src/*.ts"
          ]
      },

Поскольку это было расширено с помощью tsconfig.spe c. json.

Я изменил tsconfig.spe c. json так:

{
  "compilerOptions": {
    "target": "es5",
    "declaration": false,
    "module": "esnext",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "skipLibCheck": true,
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom",
      "es6",
      "es2015.iterable"
    ],
    "baseUrl": ".",
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "paths": {
      "@src/*": [
        "src/*.ts"
      ]
    },
    "outDir": "../out-tsc/spec",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "src/test.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "**/*.spec.ts",
    "**/*.d.ts"
  ],
  "exclude": [
    "**/*.tns.ts",
    "**/*.android.ts",
    "**/*.ios.ts"
  ]
}

, и теперь тесты выполняются, и нужные компоненты импортируются.

...