在此NativeScript代码共享项目中运行“ ng test”时为什么要导入.tns文件?

问题描述 投票:0回答:1

我有一个NativeScript代码共享项目。我希望针对使用ng test的Web版本使用Karma单元测试。由于构建测试时错误导入服务的.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以使用我的服务

    • [添加到文件顶部:

      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模块时测试失败
nativescript angular2-nativescript nativescript-codesharing
1个回答
0
投票

对我有用的解决方案是:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.