#钛 #Appcelerator 使用 ti.mocha 进行测试
我最近开始使用钛来构建原生移动应用程序。
我最近开始使用钛来构建原生移动应用程序。钛提供了一个与原生代码和更重要的是原生UI控件绑定的JavaScript框架,试图以此减少使用Angular、Ember、Vanilla JavaScript等构建的移动浏览器应用程序中通常看到的UI延迟。
测试基于浏览器的应用程序
单元测试是后端和前端人员都应该做的事情之一(我这里不讨论UI测试!)。在基于Web的应用程序中,通常可以使用 Jasmine 或 Mocha 来创建这些测试。
要使用mocha或jasmine创建单元测试,通常
-
创建一个CommonJS包(也许启用source maps,以便更好地调试!),你可以从浏览器加载它。
-
使用浏览器或PhantomJS,创建引导网页(通常这是一个grunt/gulp任务)。
-
运行测试,一个普通的网页!
最终你会得到一些可以与你的CI工具连接的东西。
使用 ti.mocha 测试钛应用程序
所以,在我开始使用钛之旅时,我首先搜索的事情之一是如何单元测试我的代码,这样我就不会在每次提交时都感到紧张!
在寻找解决方案时,ti.mocha 是我得到的为数不多的相关结果之一。
我创建了以下github仓库来解释ti.mocha 集成。如果你正在尝试理解ti.mocha 的工作原理,你可以在下一个链接中找到一个可以直接使用的示例。
https://github.com/aetheon/ti.mocha.example
尝试之后,这里有一些想法浮现在我的脑海中(查看应用程序入口点)
-
陷阱 要进行测试,你必须在测试模式下运行设备模拟器!这可能是一个非常慢的过程...
-
陷阱 测试代码和应用程序代码的紧密集成。你最终会维护两个应用程序,一个真实的和一个用于测试的。
-
陷阱|优点 你正在“真实”环境中运行单元测试。那里没有模拟的东西!(我想这取决于用例,但我认为这是一个陷阱)
-
陷阱 与CI工具的集成。因为你需要运行模拟器,所以你无法轻松获得进程的终止代码。
钛测试乌托邦
总而言之,我想要的是一个测试框架,它
-
运行速度快(类似于 grunt-contrib-jasmine)
-
模拟钛和合金API(TI.?,Alloy.createWidget)
-
观察调用TI/Alloy,例如
expect(Alloy.createWidget).toHaveBeenCalled();
-
一个可以帮助通过编写测试来描述应用程序的测试框架,而无需与钛如此紧密地耦合。
这方面的信息不多,所以请告诉我你的想法。