首页 > 代码库 > jasmine初体验

jasmine初体验

Jasmine是一个Javascript的BDD(Behavior-Driven Development)测试框架,不依赖任何其他框架。

从Github上(https://github.com/pivotal/jasmine/releases)下载所需的Jasmine版本。下载完成之后,直接打开SpecRunner.html即为Demo,除了引入Jasmine框架之外,只需引用自己所需测试的js文件以及Jasmine测试脚本引可。

一、基本语法介绍

describe(string, function):可以理解为是一个测试集或者测试包,主要功能是用来划分单元测试的,describe是可以嵌套使用的

  • 参数string:描述测试包的信息
  • 参数function:测试集的具体实现

it(string, function):测试用例(官方称之为spec)

  • 参数string:描述测试用例的信息
  • 参数function:测试用例的具体实现

 expect:断言表达式(个人理解为期望值)

 

Spy用来追踪函数的调用历史信息(是否被调用、调用参数列表、被请求次数等)。Spy仅存在于定义它的describe和it方法块中,并且每次在spec执行完之后被销毁。

(function(){
  describe("A spy", function() {
    var foo, bar = null;

    beforeEach(function() {
      foo = {
        setBar: function(value) {
        bar = value;
      }
    };

    spyOn(foo, ‘setBar‘); // 在foo对象上添加spy

    // 此时调用foo对象上的方法,均为模拟调用,因此不会执行实际的代码
    foo.setBar(123); // 调用foo的setBar方法
    foo.setBar(456, ‘another param‘);
  });

  it("tracks that the spy was called", function() {
    expect(foo.setBar).toHaveBeenCalled(); //判断foo的setBar是否被调用
  });

  it("tracks all the arguments of its calls", function() {
    expect(foo.setBar).toHaveBeenCalledWith(123); //判断被调用时的参数
    expect(foo.setBar).toHaveBeenCalledWith(456, ‘another param‘);
  });

  it("stops all execution on a function", function() {
    expect(bar).toBeNull(); // 由于是模拟调用,因此bar值并没有改变
  });
});
})();

 

当在一个对象上使用spyOn方法后即可模拟调用对象上的函数,此时对所有函数的调用是不会执行实际代码的。

toHaveBeenCalled: 函数是否被调用

toHaveBeenCalledWith: 调用函数时的参数

jasmine初体验