2016-03-09 97 views
0

在阵营应用程序,我想测试Ajax调用阵营采用摩卡与兴农

click事件由一种方法来处理JS测试Ajax:

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

这调用方法上商店这使得一个Ajax调用:

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

我试图用兴农存根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调用事先

谢谢

回答

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调用并调用回调