Unit testing 在浏览器上对Nativescript应用程序逻辑进行单元测试

Unit testing 在浏览器上对Nativescript应用程序逻辑进行单元测试,unit-testing,angular-cli,nativescript,nativescript-angular,Unit Testing,Angular Cli,Nativescript,Nativescript Angular,我正在尝试为Nativescript应用程序设置单元测试,该应用程序由浏览器上的ng test运行。问题是,每当有tns核心模块或其他插件导入时,该模块就无法解决,因为平台特定的文件(例如“tns核心模块/application/application.android.js”)从未编译到捆绑包中,从而引发如下错误:“未找到模块:错误:无法解析'tns核心模块/应用程序'” 我知道Nativescript中有内置的单元测试支持。我的问题是它不能在CI上运行。我希望能够对我的业务逻辑进行轻量级测试,

我正在尝试为Nativescript应用程序设置单元测试,该应用程序由浏览器上的
ng test
运行。问题是,每当有
tns核心模块
或其他插件导入时,该模块就无法解决,因为平台特定的文件(例如“tns核心模块/application/application.android.js”)从未编译到捆绑包中,从而引发如下错误:“未找到模块:错误:无法解析'tns核心模块/应用程序'”

我知道Nativescript中有内置的单元测试支持。我的问题是它不能在CI上运行。我希望能够对我的业务逻辑进行轻量级测试,模拟所有平台依赖关系。
我一直在寻找一种在运行时模拟模块导入的方法,但运气不好。我查看了
重新布线
包,但它只在节点上运行。

您根本无法在浏览器上运行NativeScript应用程序

如果您正在寻找类似无头模式的东西,那么在功能中也有一个,
isHeadless


在这两者之间,我可以知道为什么你认为你不能在CI上运行{N}单元测试吗?它也应该在CI上运行,毕竟它是一台基于某些触发器运行相同命令的机器。

我终于设法让它工作了。这不是一个非常优雅的解决方案,我还没有看到它需要多少维护。这里的要点:

  • 使用
    tsconfig.json
    path
    部分添加模拟导入 地点
  • 在mocks目录中,为任何未解析的模块创建文件
  • 某些nativescript模块正在引用全局脚本上的帮助程序函数 范围,但它们未定义。我的解决方案是在中定义它们
    test.ts
    像这样

  • 1.虽然不可能在浏览器上运行整个应用程序,但绝对可以使用模拟依赖项运行独立的javascript。我的目标是测试业务逻辑(不是组件,不是本机集成)。我已经成功地完成了这项工作,并将在我完成后发布一个可接受的答案。2.Appium用于e2e,而不是单元测试3.Android模拟器不能在Travis CI上运行,只能在iOS上运行。我还看到了测试床的一些问题,然后我决定这对我来说不够好。你仍然使用此解决方案,还是找到了更可靠的解决方案?@ForestG I'm st我不会使用这个解决方案。它工作得很好,而且一旦初始工作完成,就不会有那么多开销。
    window['__decorate'] = () => {};
    window['__extends'] = () => {};
    window['__metadata'] = () => {};
    window['__param'] = () => {};
    window['layout_base_1'] = { CSSType: () => {} };
    window['Crashlytics'] = {};
    window['Fabric'] = {};