zoukankan      html  css  js  c++  java
  • 使用Jasmine测试你的Javascript(三)之 Matchers

     

    使用Jasmine测试你的Javascript(一)之 Jasmine简介

    使用Jasmine测试你的Javascript(二)之 Suites和specs

    通过前两篇我们已经基本可以简单的用jasmine写出一段测试代码,本篇我们将来继续介绍jasmine中的matchers。

    Jasmine提供了一些内置的matchers(匹配器)供你使用,下面有几个是你会经常用到的。

    expect(x).toEqual(y); 当x和y相等时候通过

    expect(x).toBe(y); 当x和y是同一个对象时候通过

    expect(x).toMatch(pattern); x匹配pattern(字符串或正则表达式)时通过

    expect(x).toBeDefined(); x不是undefined时通过

    expect(x).toBeUndefined(); x undefined时通过

    expect(x).toBeNull(); x是null时通过

    expect(x).toBeTruthy(); x和true等价时候通过

    expect(x).toBeFalsy(); x和false等价时候通过

    expect(x).toContain(y);x(数组或字符串)包含y时通过

    expect(x).toBeLessThan(y); x小于y时通过

    expect(x).toBeGreaterThan(y); x大于y时通过

    expect(function(){fn();}).toThrow(e); 函数fn抛出异常时候通过

    旧版本中的一些matchers(匹配器) toNotEqual, toNotBe, toNotMatch, toNotContain 将在以后被废除.建议使用not.toEqual, not.toBe, not.toMatch, and not.toContain respectively.

    所有的matchers匹配器支持添加 .not反转结果:

    expect(x).not.toEqual(y); 

    自定义Matchers(匹配器)

    以上提供的Matchers(匹配器)已经可以满足你的大部分需求了,但是我们仍然推荐你按照需求定义自己的匹配器去匹配更加复杂的情况,自定义匹配器可以使你的代码意图更加明了,并且可以帮你移除重复的代码。

    自定义(matchers)匹配器是一件很简单的事件,一个matcher(匹配器)函数使用 this.actual 接收到一个实际值,并且该匹配函数也可以包括0或多个参数。当实际值通过匹配器的匹配,你应当返回一个ture否则返回false。

    以下代码定义了一个名为 toBeLessThan()的匹配器:

    toBeLessThan: function(expected) {
    return this.actual < expected;
    };

    将匹配器添加到suite中, 在before或者it代码块内调用this.addMatchers() 

    beforeEach(function() {
    this.addMatchers({
    toBeLessThan: function(expected) {
    return this.actual < expected;
    }
    });
    });

    你可以自定义匹配失败的消息,在匹配函数中给this.message赋值即可实现

    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;
    }
    });
    });
  • 相关阅读:
    级联操作
    深入解析http协议
    http状态码
    数据库在一对一、一对多、多对多怎么设计表关系
    [转载]C#深拷贝的方法
    TraceSource记录程序日志
    .NET 垃圾回收与内存泄漏
    DevExpress GridControl使用方法总结
    DevExpress使用技巧总结
    Oracle 错误代码小结
  • 原文地址:https://www.cnblogs.com/mz121star/p/jasmine3.html
Copyright © 2011-2022 走看看