Giter VIP home page Giter VIP logo

jspm-mock's Introduction

jspm-mock

The "jspm-mock" module swaps any jspm module with a fake alternative. Essential for mocking dependencies in unit tests.

Installation

jspm install npm:jspm-mock --dev

* Note: This package assumes that you already have a working copy of jspm installed.

Usage

Import inside jspm environment (i.e. specs):

import jspmMock from 'jspm-mock'

Get modules

jspmMock.get('fs')

* Note: All modules except jspm-mock must be imported via jspmMock.get. Modules do NOT have to be imported before calling jspmMock.mock.

Mock using functions:

jspmMock.mock('fs', function () {
    console.log("Testing FAKE function!")
})
//  same as...
//  jspmMock.mock('fs', function () {
//      default:  function () {
//          console.log("Testing FAKE function!")
//      }
//  })
jspmMock.get('fs').then(module => {
    console.log('module()', module())
})
.catch(console.error)

Mock using objects:

jspmMock.mock('fs', {
    actionOne: function () {
        console.log("Testing FAKE function object one!")
    },
    actionTwo: function () {
        console.log("Testing FAKE function object two!")
    }
})
jspmMock.get('fs').then(module => {
    console.log('module.actionOne()', module.actionOne())
    console.log('module.actionTwo()', module.actionTwo())
})
.catch(console.error)

Mock using raw sources:

jspmMock.mock(
    'fs',
    `export default function () {
        console.log('Hello from fake module!')
    }`
)
jspmMock.get('fs').then(module => {
    console.log('module()', module())
})
.catch(console.error)

Unmock when the time is right:

jspmMock.unmock('fs')

jspm-mock's People

Contributors

m-a-r-c-e-l-i-n-o avatar

Watchers

 avatar  avatar

Forkers

fernandogmar

jspm-mock's Issues

Using System.normalizeSync forces user to know the path a module's main file

The problem is that System.normalizeSync('jquery') will return something like file:///Users/joel/workplace/end-user-forms-ui/jspm_packages/npm/[email protected], but System.normalize('jquery').then(normalized => console.log(normalized)) will return the path to the main file (such as file:///Users/joel/workplace/end-user-forms-ui/jspm_packages/npm/[email protected]/dist/jquery.js).

For most or maybe all use cases, I think that System.normalize is really what should be used when doing jspmMock.mock('module-name', ...) since users of this library probably don't want to have to learn the path to modules' main file.

What is jspmMock.get for?

Why would I want to use jspmMock.get(...).then(...) instead of just System.import(...).then(...)? Also, why does jspm-mock assume that I want the default exported value, without the named exports?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.