0

我有一个 NativeScript 代码共享项目。我希望对使用ng test. .tns由于在构建测试时错误地导入了服务版本,这会失败。

以下是在最小的 NativeScript 代码共享项目中重新创建问题的步骤。

  • 创建一个新的 NativeScript 代码共享项目

    $ ng new -c=@nativescript/schematics ns-shared-test --shared
    
  • 进入项目文件夹

    $ cd ns-shared-test
    
  • 生成新服务

    $ ng generate service services/my-service
    
  • 生成一个新组件

    $ ng generate component my-component
    
  • 修改my-component.component.ts为使用 my-service

    • 在文件顶部添加:

      import { MyServiceService } from '@src/app/services/my-service.service';
      
    • 并替换构造函数:

      constructor( private myService:MyServiceService ) { }
      
  • 运行单元测试

    $ ng test
    
    • 观察测试通过
  • 拆分我的服务

    $ cp src/app/services/my-service.service.ts src/app/services/my-service.service.tns.ts
    
  • 修改my-service.service.tns.ts为使用 NativeScript 特定的东西

    • 在文件顶部添加:

      import { Color } from 'tns-core-modules/color/color';
      
    • 并替换构造函数:

      constructor() { new Color('white'); }
      
  • 运行单元测试

    $ ng test
    
    • 观察加载 NativeScript 模块时测试失败
4

1 回答 1

1

对我有用的解决方案是:

  • 将“my-service.service.ts”重命名为 my-service.service.web.ts
  • 在我的 Web 组件中从 '@src/app/services/my-service.service.web' 导入 { MyServiceService };
  • 在规范文件中 import { MyServiceService } from '@src/app/services/my-service.service.web'

ng test 命令现在应该可以工作了

于 2020-01-08T16:38:20.923 回答