0.1.16 • Published 10 years ago
babel-plugin-mocktail v0.1.16
Usage (Mocha)
Setup
npm install --save-dev babel-cli babel-plugin-mocktail mocha assertCreate example source for testing
File: src/example.js
const Example = "unmocked"
export default ExampleCreate ENV.TESTING trigger
File: test/setup.js
import { env, ENV } from "mocktail"
env(ENV.TESTING)Create mock file
File: test/example.mock.js
import { inject } from "mocktail"
inject("Example", "mocked")Create test (unmocked)
File: test/unmocked.test.js
import assert from "assert"
import Example from "../src/example"
describe("Unmocked Example", () => {
it("should be unmocked", () => assert(Example === "unmocked"))
})Create unit test (mocked)
File: test/mocked.test.js
import "./setup"
import "./example.mock"
import assert from "assert"
import Example from "../src/example"
describe("Mocked Example", () => {
it("should be mocked", () => assert(Example === "mocked"))
})Run the tests
babel-node --plugins mocktail $(which _mocha) test/unmocked.test.js
babel-node --plugins mocktail $(which _mocha) test/mocked.test.jsRun the tests INCORRECTLY
babel-node --plugins mocktail $(which _mocha) test/*.test.jsNotes
- Example Repository
- Avoid using the plugin outside the test context
- Run
mockedandunmockedtests in separate runs - Name your
defaultexports to reduce DI collision chance env(ENV.TESTING)should be in separate file (setup)setupshould be imported before any otherimport- mocks should be in separate
mock files mock files should be imported before testedsourcesimports
How it works
The plugin walks the AST and looks for export declarations.
When it finds the declaraions, they are replaced with mock(declaration, name).
The name is either the name of the declaration or camel-cased filename.
Installation
npm install --save-dev babel-plugin-mocktailDocumentation (ESDOC)
https://nhz-io.github.io/babel-plugin-mocktail