Jasmin档案
用途:javascript单元测试框架
下载:github/downloads/pivotal/jasmine/jasmine-standalone-1.2.0.zip
使用文档:github/pivotal/jasmine/wiki
页面前端逻辑复杂度与日俱增,前端工程师写出来的javascript变得庞大甚至臃肿,维护的难度不断加大,你需要一个javascript单元测试框架,用于降低维护javascript代码时的出错风险,保证重构后的代码的兼容性,最重要的是减少人肉测试的过程,降低js代码维护成本。jasmine无疑是目前最优秀的javascript单元测试框架之一,在易用性和质量上都非常不错。
pivotal.github/jasmine/上有如下描述:
Jasmine is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.
行为驱动开发(Behavior Driven Development)
BDD使用几乎近于自然语言的方式描述了软件的行为过程,因此,可以直接作为软件的需求文档,也可以直接应用到测试中,作为测试的标准文档。我们在做单元测试时,经常是针对某个函数,或是某个类进行测试,但是被测函数或是被测的类是可能经常变化的,我们的测试案例也需要经常性的随之变化。然后,BDD描述的是软件的整个系统行为,几近于需求文档,可变性大大减小。因此,测试案例不需要做太大变化。同时,这样的测试案例最贴近于需求,贴近于实际的系统行为。
BDD描述的行为就像一个个的故事(Story),系统业务专家、开发者、测试人员一起合作,分析软件的需求,然后将这些需求写成一个个的故事。开发者负责填充这些故事的内容,测试者负责检验这些故事的结果。
从例子开始
下载[jasmine-standalone-1.2.0.zip](github/downloads/pivotal/jasmine/jasmine-standalone-1.2.0.zip “jasmine-standalone-1.2.0.zip”),解压缩,源文件结构如下:
点击SpecRunner.html,体验一下测试结果界面。

当测试用例的背景全部为绿时,表示测试通过,红出现时表示测试失败,代码有问题。
SpecRunner.html是非常标准的单元测试,可以作为你项目测试页面模板。
参考Jasmine提供的demo,编写一个自己的单元测试例子,来阐述Jasmine的用法以及注意点。以下是代码目录结构:
在spec-runner.html,进行了如下操作:
引入Jasmine提供的CSS和JS文件
<link rel="stylesheet" type="text/css" href="lib/jasmine-1.2.0/jasmine.css">
<script type="text/javascript" src="lib/jasmine-1.2.0/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-1.2.0/jasmine-html.js"></script>
通用代码copy到文件中
<script type="text/javascript">
    (function() {
      var jasmineEnv = Env();
      jasmineEnv.updateInterval = 1000;
      var htmlReporter = new jasmine.HtmlReporter();
      jasmineEnv.addReporter(htmlReporter);
      jasmineEnv.specFilter = function(spec) {
        return htmlReporter.specFilter(spec);
      };
      var currentWindowOnload = load;
      load = function() {
        if (currentWindowOnload) {
          currentWindowOnload();
        }
        execJasmine();
      };
      function execJasmine() {
        ute();
      }
    })();
</script>
引入需要测试的源文件
<script type="text/javascript" src="src/sub.js"></script>
<script type="text/javascript" src="src/dom.js"></script>
引入测试文件
<script type="text/javascript" src="test/sub.spec.js"></script>
<script type="text/javascript" src="test/dom.spec.js"></script>
建议源文件和测试文件都body的底部,这样不需要care dom ready,可以保持测试文件中代码简单,纯洁。
基本概念
基本概念的描述直接引用jasmine首页的表述,在学习和理解基本概念时,请结合以下Test case代码:
    describe('Super Class Test', function(){
        var oSuper;
        beforeEach(function() {
            oSuper = new Super('Colin', 31);
        });
        describe('Name related api Test', function() {
            it('should get correct name by getName', function() {
                Name()).toEqual('Colin');
            });
            it('can set name by setName', function() {
                oSuper.setName('Peter');
                expect(oSuper.name).toEqual('Peter');
            });
        });
        describe('Age related api Test', function() {
            it('should get correct age by getAge', function() {
                Age()).toEqual(31);
            });
            it('can set age by setAge', function() {
                oSuper.setAge(18);
                expect(oSuper.age).toEqual(18);
            });
        });
    });

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。