Unit testing 在浏览器上对Nativescript应用程序逻辑进行单元测试
我正在尝试为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上运行。我希望能够对我的业务逻辑进行轻量级测试,
ng test
运行。问题是,每当有tns核心模块
或其他插件导入时,该模块就无法解决,因为平台特定的文件(例如“tns核心模块/application/application.android.js”)从未编译到捆绑包中,从而引发如下错误:“未找到模块:错误:无法解析'tns核心模块/应用程序'”
我知道Nativescript中有内置的单元测试支持。我的问题是它不能在CI上运行。我希望能够对我的业务逻辑进行轻量级测试,模拟所有平台依赖关系。
我一直在寻找一种在运行时模拟模块导入的方法,但运气不好。我查看了
重新布线
包,但它只在节点上运行。您根本无法在浏览器上运行NativeScript应用程序
如果您正在寻找类似无头模式的东西,那么在功能中也有一个,isHeadless
在这两者之间,我可以知道为什么你认为你不能在CI上运行{N}单元测试吗?它也应该在CI上运行,毕竟它是一台基于某些触发器运行相同命令的机器。我终于设法让它工作了。这不是一个非常优雅的解决方案,我还没有看到它需要多少维护。这里的要点:
tsconfig.json
的path
部分添加模拟导入
地点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'] = {};