Ajax在成功期间返回的Jasmine测试值

时间:2014-05-19 15:14:17

标签: jquery jasmine-jquery

我的javascript函数,它进行Ajax调用并将返回的值写入DOM元素 我正在为茉莉花和茉莉花这个函数编写单元测试。我能够使用它来模拟ajax请求。

以下是功能&单元测试

myFunction(){
 ......
 ....
  $.ajax(){
     method: "GET"
     url: "/myTest"
     success: function(test){
           $("#htmlElem").html(test);
     }
  };
};

it("specifying response when you need it", function() {

  expect(jasmine.Ajax.requests.mostRecent().url).toBe("/myTest);
  ... 
  jasmine.Ajax.requests.mostRecent().response({
  "status": 200,
  "contentType": 'text/plain',
  "responseText": 'awesome response'
 });

 myFunction();
 var testVal = $("htmlElem").val();
 expect(testVal).toBe('awesome response');
});

测试用例失败,显示testVal为空。据我所知,这是因为实际的ajax调用没有执行,所以成功调用也是如此。 我的理解是否正确?如果是这样,那么如何测试ajax调用返回的值是否正确设置为html元素。 提前致谢 任何p

1 个答案:

答案 0 :(得分:0)

尝试在原始AJAX调用中添加回调函数,然后在调用完成后使用Jasmine's asynchronous support对其进行测试。

myFunction(done) {
  $.ajax(){
     method: "GET"
     url: "/myTest"
     success: function(test){
       $("#htmlElem").html(test);
       done();
     }
  };
};

it("specifying response when you need it", function(done) {    
  // ...
  myFunction(function() {
    var testVal = $("htmlElem").val();
    expect(testVal).toBe('awesome response');
    done();
  });     
});