利用 Sinonjs 构建测试桩:Spies and Stubs

事件 异常 类型检查 测试 Mocha 测试桩 Mock

利用 Mocha 进行 BDD 风格测试一文中介绍了Mocha测试框架的使用, 其中略过了before(), beforeEach()等钩子。 本文介绍在Mocha下如何利用这些钩子构建测试上下文, 以及如何使用Sinonjs构建测试桩。

Sinonjs

事实上Sinonjs提供了三种测试桩:Spies, Stubs, Mocks。 以及一些虚拟环境:Timers、JSONP、XHR等。 本文着重介绍如何利用Spies和Stubs的使用。

文档:

安装:

npm install --save-dev sinon

ES5 属性管理:defineProperty, preventExtensions, seal, freeze

JavaScript 封装 defineProperty

ES5定义的Object.defineProperty()方法提供了面向对象实现中 『属性』的概念,类似于C#的属性(Property),或Java的访问器(Accessor)。 『属性』可以用来隐藏内部变量,实现写保护和读写钩子,从而加强对象封装。 ES5为此给出了一系列的对象属性管理方法,包括:Object.defineProperty, Object.preventExtensions, Object.seal, Object.freeze等。

defineProperty参数

Object.defineProperty(obj, prop, descriptor)用于在对象obj上添加(或修改) 名为prop的属性,该方法接受三个参数:

  • obj:需要定义属性的对象
  • prop:属性名,字符串类型
  • descriptor:属性描述符,对象类型。

可以通过descriptor可以精确地控制该属性的行为, 该描述符可以分为数据描述符存取描述符两种。它们具有不同的属性,不可混用。

使用 Vim 寄存器

Vim-Practice Linux Vim Windows X11 剪切板 寄存器 正则表达式

常见文本编辑器都会提供剪切板来支持复制粘贴,Vim也不例外。 不同的是Vim提供了10类共48个寄存器,提供无与伦比的寄存功能。 最常用的y操作将会拷贝到默认的匿名寄存器中,我们也可以指定具体拷贝到哪个寄存器中。

一般来讲,可以用"{register}y来拷贝到{register}中, 用"{register}p来粘贴{register}中的内容。例如: "ayy可以拷贝当前行到寄存器a中,而"ap则可以粘贴寄存器a中的内容。

正则表达式参考手册

字符串 正则表达式

正则表达式(Regular Expression,RegExp,regex)使用单个字符串来描述和匹配一系列符合某种句法规则的字符串。此概念来自形式化语言理论,最初由贝尔实验室实现。

正则表达式最初在Perl中实现,它的推广得益于UNIX软件的流行,尤其是SED,GREP等。 现在许多编程语言都内置了正则表达式引擎,如PERL、Python、JavaScript、Java、C++11等。 很多文本编辑器也支持正则表达式来进行检索和替换(尤其是Vim!)。

Mocha 下测试异步代码

JavaScript NPM Promise 回调函数 Chai Mocha 测试 BDD 异步

利用 Mocha 进行 BDD 风格测试中介绍了Mocha测试框架和 Chai断言库的使用。JavaScript天生就是异步的, 这意味着在JavaScript测试中往往会需要异步断言。 本文介绍如何使用Chaichai-as-promised来测试Promise。

Mocha测试异步代码

Mocha本身是支持异步测试的。只需要为describe回调函数添加一个done参数, 成功时调用done(),失败时调用done(err)。例如:

var expect = require('chai').expect;
describe('db', function() {
    it('#get', function(done) {
        db.get('foo', function(err, foo){
            if(err) done(err);        
            expect(foo).to.equal('bar');
            done();
        });
    });
});

jQuery 利用 FormData 上传文件

FormData HTML HTTP IE JavaScript jQuery 表单 异步

文件上传是Web开发中的重要话题,最直接和简单的方式是通过表单直接提交文件。 Harttle认为,我们引入jQuery来进行异步上传可以获得更好的用户体验。 一方面,在JavaScript中进行异步操作比表单更加灵活; 另一方面,异步上传也避免了上传大文件时的页面长时间卡死。

Liquid 是世界上最好的模板引擎

NPM Node.js 模板 Liquid Express.js

模板引擎是Web应用中用来生成动态HTML的工具, 它负责将数据模型与HTML模板结合(模板渲染),生成最终的HTML。 编写HTML模板的语法称为模板语法,模板语法的表达能力和可扩展性决定了模板引擎的易用性。 在转战不同的模板引擎后, Harttle 决定坚决支持Liquid,并在Node.JS下实现liquidjs模板引擎。 此前用这篇文章来讨论模板引擎的用途及其优劣。

导航: 上一页 下一页

加载中...

🔝