首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jasmine,一个测试,多个ajax请求(错误: ajax已经被监视)

Jasmine,一个测试,多个ajax请求(错误: ajax已经被监视)
EN

Stack Overflow用户
提问于 2015-12-16 12:01:45
回答 1查看 769关注 0票数 1

我有一个Jasmine 2.0.2测试,它触发一个ajax请求,但是每次触发请求时,模拟ajax返回应该是一个特定的返回值。

代码语言:javascript
复制
  var setUpDeleteEventInAjax = function(spyEvent, idToReturn){
    var spy;
    spy = jasmine.createSpy('ajax');
    spyAjaxEvent = spyOnEvent(spyEvent, 'click');
    spyOn($, 'ajax').and.callFake(function (param) {
      return {
        id: idToReturn,  // here I am trying to return a defined value
        status: true
      };
    });
    spyAjaxEvent.reset();  //  this should reset all ajax evetns
  };

...
beforeEach(function(){...})
afterEach(function(){...})
...

it('Deleting all the addresses should reveal the form', function () {

    setUpDeleteEventInAjax('#delete',52670);
    $('#delete').click();
    expect($('.address-item').length).toEqual(4);

    setUpDeleteEventInAjax('#delete-2',52671);
    $('#delete-2').click();
    expect($('.address-item').length).toEqual(2);

    setUpDeleteEventInAjax('#delete-3',52672);
    $('#delete-3').click();
    expect($('.address-item').length).toEqual(0);

  });
...

在点击delete按钮( delete,delete-2,delete-3 )之后,总长度地址项减少2(当服务器返回一个数字时-这是模拟的症结所在)。

然而,jasmine抱怨说"ajax已经被监视了“。有没有一种方法可以从ajax模拟返回一个新值来完成测试?

EN

回答 1

Stack Overflow用户

发布于 2015-12-16 13:38:48

实际上,我做这件事的方式是过度设计的。只是想要个了结。不需要我的自定义setUpDeleteEventInAjax函数

代码语言:javascript
复制
  it('Deleting all the addresses should reveal the form', function () {
    var responses = [52670, 52671, 52672];
    var ajaxResponses = function () {
      return {
        status: true,
        id: responses.shift()
      }
    };
    spyOn($, 'ajax').and.callFake(ajaxResponses);

    $('#delete').click();
    expect($('.address-item').length).toEqual(4);

    $('#delete-2').click();
    expect($('.address-item').length).toEqual(2);
    expect($('.address-book')).toHaveClass('single-address');

    $('#delete-3').click();
    expect($('.address-item').length).toEqual(0);

  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34303715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档