65.9K
CodeProject 正在变化。 阅读更多。
Home

#钛 #Appcelerator 使用 ti.mocha 进行测试

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2014年6月23日

MIT

2分钟阅读

viewsIcon

7830

我最近开始使用钛来构建原生移动应用程序。

我最近开始使用钛来构建原生移动应用程序。钛提供了一个与原生代码和更重要的是原生UI控件绑定的JavaScript框架,试图以此减少使用Angular、Ember、Vanilla JavaScript等构建的移动浏览器应用程序中通常看到的UI延迟。

测试基于浏览器的应用程序

单元测试是后端和前端人员都应该做的事情之一(我这里不讨论UI测试!)。在基于Web的应用程序中,通常可以使用 JasmineMocha 来创建这些测试。

要使用mocha或jasmine创建单元测试,通常

  • 创建一个CommonJS包(也许启用source maps,以便更好地调试!),你可以从浏览器加载它。

  • 使用浏览器或PhantomJS,创建引导网页(通常这是一个grunt/gulp任务)。

  • 运行测试,一个普通的网页!

最终你会得到一些可以与你的CI工具连接的东西。

Grunt running Jasmine test

使用 ti.mocha 测试钛应用程序

所以,在我开始使用钛之旅时,我首先搜索的事情之一是如何单元测试我的代码,这样我就不会在每次提交时都感到紧张!

在寻找解决方案时,ti.mocha 是我得到的为数不多的相关结果之一。

我创建了以下github仓库来解释ti.mocha 集成。如果你正在尝试理解ti.mocha 的工作原理,你可以在下一个链接中找到一个可以直接使用的示例。

https://github.com/aetheon/ti.mocha.example

ti.mocha execution

尝试之后,这里有一些想法浮现在我的脑海中(查看应用程序入口点

  • 陷阱 要进行测试,你必须在测试模式下运行设备模拟器!这可能是一个非常慢的过程...

  • 陷阱 测试代码和应用程序代码的紧密集成。你最终会维护两个应用程序,一个真实的和一个用于测试的。

  • 陷阱|优点 你正在“真实”环境中运行单元测试。那里没有模拟的东西!(我想这取决于用例,但我认为这是一个陷阱)

  • 陷阱 与CI工具的集成。因为你需要运行模拟器,所以你无法轻松获得进程的终止代码。

钛测试乌托邦

总而言之,我想要的是一个测试框架,它

  • 运行速度快(类似于 grunt-contrib-jasmine

  • 模拟钛和合金API(TI.?,Alloy.createWidget)

  • 观察调用TI/Alloy,例如 expect(Alloy.createWidget).toHaveBeenCalled();

  • 一个可以帮助通过编写测试来描述应用程序的测试框架,而无需与钛如此紧密地耦合。

这方面的信息不多,所以请告诉我你的想法。

© . All rights reserved.