在浏览器上对 Nativescript 应用程序逻辑进行单元测试
Unit testing Nativescript application logic on a browser
我正在尝试通过 ng test
在浏览器上为 Nativescript 应用程序设置单元测试,运行。问题是,每当有 tns-core-modules
或另一个插件导入时,由于平台特定文件(例如 "tns-core-modules/application/application.android.js")永远不会编译到包中,因此无法解析模块,因此会抛出类似的错误"Module not found: Error: Can't resolve 'tns-core-modules/application'".
我知道 Nativescript 中有内置的单元测试支持。我遇到的问题是它不能在 CI 上 运行。我希望能够对我的业务逻辑进行轻量级测试,模拟所有平台依赖项。
我一直在寻找一种在 运行 时间模拟模块导入的方法,但没有成功。我查看了 rewire
包,但它在节点上只有 运行s。
您根本无法 运行 浏览器上的 NativeScript 应用程序。
如果您正在寻找无头模式之类的东西,Appium 也有,isHeadless
功能。
请问您为什么认为您不能在 CI 上 运行 {N} 个单元测试?它也应该在 CI 上工作,毕竟它是一台 运行 基于某些触发器发出相同命令的机器。
我终于成功了。这不是一个非常优雅的解决方案,我还没有看到它需要多少维护。这里要点:
- 使用
tsconfig.json
的 paths
部分添加模拟导入
地点
- 在 mocks 目录中为任何未解析的模块创建文件
- 一些 nativescript 模块正在引用全局上的辅助函数
范围,但它们未定义。我的解决方案是在
test.ts
像这样
window['__decorate'] = () => {};
window['__extends'] = () => {};
window['__metadata'] = () => {};
window['__param'] = () => {};
window['layout_base_1'] = { CSSType: () => {} };
window['Crashlytics'] = {};
window['Fabric'] = {};
我正在尝试通过 ng test
在浏览器上为 Nativescript 应用程序设置单元测试,运行。问题是,每当有 tns-core-modules
或另一个插件导入时,由于平台特定文件(例如 "tns-core-modules/application/application.android.js")永远不会编译到包中,因此无法解析模块,因此会抛出类似的错误"Module not found: Error: Can't resolve 'tns-core-modules/application'".
我知道 Nativescript 中有内置的单元测试支持。我遇到的问题是它不能在 CI 上 运行。我希望能够对我的业务逻辑进行轻量级测试,模拟所有平台依赖项。
我一直在寻找一种在 运行 时间模拟模块导入的方法,但没有成功。我查看了 rewire
包,但它在节点上只有 运行s。
您根本无法 运行 浏览器上的 NativeScript 应用程序。
如果您正在寻找无头模式之类的东西,Appium 也有,isHeadless
功能。
请问您为什么认为您不能在 CI 上 运行 {N} 个单元测试?它也应该在 CI 上工作,毕竟它是一台 运行 基于某些触发器发出相同命令的机器。
我终于成功了。这不是一个非常优雅的解决方案,我还没有看到它需要多少维护。这里要点:
- 使用
tsconfig.json
的paths
部分添加模拟导入 地点 - 在 mocks 目录中为任何未解析的模块创建文件
- 一些 nativescript 模块正在引用全局上的辅助函数
范围,但它们未定义。我的解决方案是在
test.ts
像这样
window['__decorate'] = () => {};
window['__extends'] = () => {};
window['__metadata'] = () => {};
window['__param'] = () => {};
window['layout_base_1'] = { CSSType: () => {} };
window['Crashlytics'] = {};
window['Fabric'] = {};