Skip to content

moye unit test guide

chris edited this page Apr 7, 2014 · 8 revisions

moye单测开发指南

author @chriswong @jinzhubaofu

单测环境搭建

moye 目前依靠 grunt 工具,搭建了基于 jasminekarma 的单测环境。环境可以通过以下命令搭建:

git clone https://github.com/ecomfe/moye.git
cd moye && sudo npm install

注意:单测的默认是基于 webkit 内核的 phantomjs,安装过程中可以能出现下载失败、下载速度慢、需要管理员权限等问题。可以在安装依赖前,在 test/config.js 中先将浏览器更换为 chrome,并移除 phantomjs 的依赖。另外,开发机上并没有 chrome,还请在本地调试。

解决npm安装过慢 因为源在国外,可以考虑采用代理安装:

npm config set proxy=http://*.*.*.*:端口
sudo npm install

如何编写单测

  • moye 的单测基于前端测试框架 jasmine,版本为1.3。jasmine 语法请参看 jasmine入门

  • 单测脚本命名需要符合一定格式:必须Spec 为结尾,若组件名为 SomeControl.js, 那么相应的单测脚本名应为SomeControlSpec.js。并且放置在 test/spec 目录下。

  • 每个组件应该基于自己可控范围的 DOM 作操作,避免影响其他组件。在 afterEach 中应该调用组件的 dispose 方法并移除自己创建的所有 DOM 及事件监听。

如何运行单测

运行单测

grunt test

运行单测,并生成单测覆盖率报告

grunt cover

报告会被生成到 test/coverage下,在浏览器中查看 test/coverage/index.html 查看结果。

grunt testgrunt cover会在根目录下生成一个 SpecRunner.html,有问题时可以在浏览器中打开这个文件进行调试。

注意, grunt test 与 grunt cover 默认使用 phantomjs 跑单测,如果希望在其他浏览中跑单测:

  1. 在其他浏览器运行 SpecRunner.html

  2. 参考下一小节的说明

在其他浏览器中测试

moye 的默认测试环境为 phantomjs;可以通过修改 Gruntfile.jskarma的配置来更换测试环境;例如将 phantomjs 更换为 chromefirefox

karma: {
    options: {
         configFile: 'test/config.js',
         reporters: 'dots',
         singleRun: true
    },
    dev: {
        browsers: ['Chrome', 'Firefox']
    }
}

然后通过运行grunt karma来开始测试。