使用Mocha& amp; React JS测试Ajax兴农

时间:2016-03-09 20:30:43

标签: ajax testing reactjs mocha sinon

在React应用程序中,我想测试一个ajax调用

点击事件由方法处理:

_search = () => {
    AppActions.search({
      url: this.props.url,
      queryValue: query
    })
  }

这会在进行Ajax调用的商店上调用一个方法:

onSearch (req) {
    $.get(url)
      .done((data) => {
        // set state...
      })
  }

我试图使用Sinon来存储jquery ajax调用:

describe('Search', function () {
  describe('Rendering', function () {
    beforeEach(() => {
      sinon.stub($, 'ajax')
      let component = TestUtils.renderIntoDocument(<MockComponent />)
      this.renderedDOM = ReactDOM.findDOMNode(component)
    })

    afterEach(() => {
      $.ajax.restore()
    })

    it('Should make an ajax request', () => {
      TestUtils.Simulate.click(myButton)
      // expect stubbed ajax call to have been made with args etc
    })
  })
})

任何人都知道我应该如何做到这一点,以便我可以:

  1. 存根ajax调用
  2. 调用回调或
  3. 检查存根的ajax电话
  4. 提前致谢

1 个答案:

答案 0 :(得分:0)

我认为你应该使用sinon的fakeServer api。

例如:

const server = sinon.fakeServer.create();
server.respondWith("GET", "/rest/api/yourURL", [200, {"Content-Type": "application/json"}, '{"response": "whatever"}']);

// TODO: test code

server.respond();
server.restore();

它可以存根ajax调用并调用回调