jsamine单元测试框架和ext-js框架集成 - 面向对象网,web开发,Extjs,学习,对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > Web开发 > Extjs > 正文

jsamine单元测试框架和ext-js框架集成

来源: www.bianceng.cn 阅读:

最近研究了下jasmine框架,收益颇丰。基于公司一位同事的文档,我这里列举下jasmine框架的一些特征。

一:介绍

Jasmine框架是一个行为驱动的开发框架,用于测试javascript代码,它不会依赖于任何其他的javascript框架,也不需要一个DOM,并且它有非常简单和清晰的语法。

二:适用范围

因为Jasmine框架不依赖浏览器,DOM,或者任何javascript框架,所以它特别适合单元测试网站,Node.js项目或者任何有javascript运行的项目。

小例子1:比如要测试是否真实值比期望值小

beforeEach(function() { 
  this.addMatchers({ 
     
    toBeLessThan: function(expected) { 
      var actual = this.actual; 
      var notText = this.isNot ? " not" : ""; 
     
      this.message = function () { 
        return "Expected " + actual + notText + " to be less than " + expected; 
      } 
     
      return actual < expected; 
    } 
     
  }); 
});

小例子2: 比如要测试Ajax或者其他异步的行为:

var Klass = function () { 
}; 
     
Klass.asyncMethod = function (callback) { 
  someAsyncCall(callback); 
}; 
     
... 
     
it('should test async call', function () { 
  spyOn(Klass, 'asyncMethod'); 
  var callback = jasmine.createSpy(); 
     
  Klass.asyncMethod(callback); 
  expect(callback).not.toHaveBeenCalled(); 
     
  var someResponseData = 'foo'; 
  Klass.asyncMethod.mostRecentCall.args[0](someResponseData); 
  expect(callback).toHaveBeenCalledWith(someResponseData); 
     
});

三:我们为什么选择Jasmine框架?

虽然在市面上有许多种类的js单元测试框架,比如TestSwarm, JsTestDriver,Buster.js,YUI Yeti,Sinon等,但是很多单元测试框架只支持和浏览器协同工作,有些单元测试框架无法支持异步回调代码的测试。有些代码,对于IDE很难理解,然而,Jasmine框架则是集各种框架优点于一身的好框架。

四:Jasmine框架的优秀设计原则:

(1)好的js单元测试框架不应该联合到任何浏览器,框架,平台或者宿主机器的语言设置。

(2)好的js单元测试框架应该有符合js语言习惯的语法。

(3)好的js单元测试框架应该在任何js可以运行的地方运行

(4)好的js单元测试框架应该对于被测试的应用是非侵入式的。

(5)好的js单元测试框架应该能和IDE很好融合,比如可以通过IDE的静态代码质量检查。

(6)好的js单元测试框架应该足够简单,并且容易上手。(这一点我深有体会,我看5分钟就学会了,然后写了第一个demo并且跑通了)

Tags:
相关文章列表: