Homepage: https://github.com/magnars/buster-snippets.el
Author: Magnar Sveen
Updated:
Yasnippets for the Buster javascript testing framework
Yasnippets for the Buster javascript testing framework
Common snippets
tc => new testCase (one for node, browser and node+browser)
tt => additional test
cx => nested context
su => setup method
td => teardown method
Assert and refute snippets follow a common pattern. They start with `as` or `re`
followed by a mnemonic shortcut. Most are simply the 'initials' of the method name, but
the best shortcuts are saved for the most common assertions.
ase - assert.equals
asm - assert.match
ass - assert.same
asx - assert.exception
asd - assert.defined
ast - assert.threw
asat - assert.alwaysThrew
asin - assert.isNull
asio - assert.isObject
asto - assert.typeOf
ascn - assert.className
astn - assert.tagName
Buster also includes Sinon and its assertions:
asc - assert.called
asc1 - assert.calledOnce
asc1w - assert.calledOnceWith
asc2 - assert.calledTwice
asc3 - assert.calledThrice
ascw - assert.calledWith
ascc - assert.callCount
asco - assert.callOrder
asco - assert.calledOn
asaco - assert.alwaysCalledOn
asacw - assert.alwaysCalledWith
asacwe - assert.alwaysCalledWithExactly
ascwe - assert.calledWithExactly
Refutations mirrors assertions exactly, except that they start with `re` instead of
`as`. It is the beautiful symmetry of the buster assertions package.
Installation
If you haven't, install [yasnippet](http://capitaomorte.github.com/yasnippet/)
then install buster-snippets like so:
git submodule add https://github.com/magnars/buster-snippets.el.git site-lisp/buster-snippets
Then require buster-snippets at some point after yasnippet.
(require 'buster-snippets)
Customization
Add `"use strict"`-declarations to the test cases:
(setq buster-use-strict t)
Declare `assert` and `refute` if you've disabled additional globals:
(setq buster-exposed-asserts nil)
Set the default global namespace-object on a per-project basis:
(add-hook 'js2-mode-hook
(lambda ()
(when (string-match-p "projects/zombietdd" (buffer-file-name))
(setq js2-additional-externs '("ZOMBIE"))
(setq buster-default-global "ZOMBIE"))))
;; example from one of my projects
Add the default global to the IIFE (immediately invoked function expression)
(setq buster-add-default-global-to-iife t)
The global will by default be shortened to a one-letter var, like this:
(function (Z) {
// use Z instead of ZOMBIE inside the namespace
}(ZOMBIE));