Karma - Jasmine语法

2020-01-07  本文已影响0人  Lisa_Guo

Jasmine可结合Karma使用,提供具体的测试代码。它是一个行为驱动测试(BDD)的测试框架,不依赖与浏览器、dom或其他js框架,可以方便地在各种场景中使用。

1. 套件suit: describe
全局函数describe(description, specDefinitions)用于创建一个套件,封装一组测试代码

Name Type Description
description String 定义分组名称
specDefinitions function 定义一个函数,包含一组要测试的内部suit和测试规范specs

2. 规范spec:lt
全局函数it(description, testFunctionopt, timeoutopt)定义一个单独的测试规范。一个规范 spec 应该包含一个或多个期望值 expectations。一个 spec 的所有 expectation 都成功才算为测试成功

Name Type Attributes Default Description
description String 定义一个规范名称
testFunction implementationCallback <optional> 测试代码
timeout Int <optional> jasmine.DEFAULT_TIMEOUT_INTERVAL 异步sepc的timeout

3. 断言expectation: expect
expect| expectAsync (actual) → {matchers}spec创建一个断言 expectation

Name Type Description
actual Object 要测试的目标变量或对象

一个Suite(describe)包含多个Specs(it),一个Specs(it)包含多个断言(expect)。

4. 匹配器Matcher
每一个匹配器实现的是真实值和期望值的比较。它负责报告给jasmine如果期望值是真的或者假的。jasmine将使这个规范通过或者失败。
所有matcher请参考: https://jasmine.github.io/api/3.5/matchers.html

not:对matcher进行反操作

expect(something).not.toBe(true);

4.1 Number匹配

it("The 'toBe' matcher compares with ===", function() {
    var a = 12;
    var b = a;
    expect(a).toBe(b);
    expect(a).not.toBe(null);
  });

测试结果


4.2 Object匹配

it("The 'toEqual' for deep comparision", function() {
    var bigObject = {
      foo: ['bar', 'baz']
    };
    var anotherObject = {
      foo: 'bar'
    };
    expect(bigObject).toEqual({ foo: ['bar', 'baz'] });
    // expect(anotherObject).toEqual({ foo: ['bar', 'baz'] });
  });

测试结果


4.3 Boolean匹配

上一篇下一篇

猜你喜欢

热点阅读