Wondering what’s next for npm?Check out our public roadmap! »

    @stoplight/moxios

    1.0.0 • Public • Published

    moxios build status

    Mock axios requests for testing

    Installing

    $ npm install moxios --save-dev

    Example

    import axios from 'axios'
    import moxios from 'moxios'
    import sinon from 'sinon'
    import { equal } from 'assert'
     
    describe('mocking axios requests', function () {
     
      describe('across entire suite', function () {
     
        beforeEach(function () {
          // import and pass your custom axios instance to this method
          moxios.install()
        })
     
        afterEach(function () {
          // import and pass your custom axios instance to this method
          moxios.uninstall()
        })
     
        it('specify response for a specific request', function (done) {
          let input = document.querySelector('.UserList__Filter__Input')
          let button = document.querySelector('.UserList__Filter__Button')
     
          input.value = 'flintstone'
          button.click()
     
          // Elsewhere in your code axios.get('/users/search', { params: { q: 'flintstone' } }) is called
     
          moxios.wait(function () {
            let request = moxios.requests.mostRecent()
            request.respondWith({
              status: 200,
              response: [
                { id: 1, firstName: 'Fred', lastName: 'Flintstone' },
                { id: 2, firstName: 'Wilma', lastName: 'Flintstone' }
              ]
            }).then(function () {
              let list = document.querySelector('.UserList__Data')
              equal(list.rows.length, 2)
              equal(list.rows[0].cells[0].innerHTML, 'Fred')
              equal(list.rows[1].cells[0].innerHTML, 'Wilma')
              done()
            })
          })
        })
     
        it('stub response for any matching request URL', function (done) {
          // Match against an exact URL value
          moxios.stubRequest('/say/hello', {
            status: 200,
            responseText: 'hello'
          })
     
          // Alternatively URL can be a RegExp
          moxios.stubRequest(/say.*/, {/* ... */})
     
          let onFulfilled = sinon.spy()
          axios.get('/say/hello').then(onFulfilled)
     
          moxios.wait(function () {
            equal(onFulfilled.getCall(0).args[0].data, 'hello')
            done()
          })
        })
     
      })
     
      it('just for a single spec', function (done) {
        moxios.withMock(function () {
          let onFulfilled = sinon.spy()
          axios.get('/users/12345').then(onFulfilled)
     
          moxios.wait(function () {
            let request = moxios.requests.mostRecent()
            request.respondWith({
              status: 200,
              response: {
                id: 12345, firstName: 'Fred', lastName: 'Flintstone'
              }
            }).then(function () {
              equal(onFulfilled.called, true)
              done()
            })
          })
        })
      })
     
    })

    Thanks

    moxios is heavily inspired by jasmine-ajax

    License

    MIT

    Install

    npm i @stoplight/moxios

    DownloadsWeekly Downloads

    2

    Version

    1.0.0

    License

    MIT

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar