首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不知道如何用Jasmine测试这个asyn函数

不知道如何用Jasmine测试这个asyn函数
EN

Stack Overflow用户
提问于 2015-11-23 11:04:03
回答 1查看 50关注 0票数 1
代码语言:javascript
复制
asynFn(url, callback)

该函数接受一个url并发出一些xhr请求,然后使用callback(result)将处理的结果发回。我该怎么测试呢?

(我在Chrome中直接运行了asynFn,运行得很好。)

我试图使用jasmine-ajax对请求进行存根处理,但是expect没有工作。

代码语言:javascript
复制
describe('a test', function() {
  var callback

  beforeAll(function() {
    jasmine.Ajax.install()

    jasmine.Ajax.stubRequest('fake/path1').andReturn({
      status: 200,
      contentType: 'text/plain',
      responseText: 'yay'
    })

    jasmine.Ajax.stubRequest('fake/path2').andReturn({
      status: 200,
      contentType: 'text/plain',
      responseText: 'yay2'
    })

    // ...
  })

  afterAll(function() {
    jasmine.Ajax.uninstall()
  })

  beforeEach(function() {
    callback = jasmine.createSpy('sendResponse')
  })

  it('a spec', function() {

    asynFn('input string', callback)

    expect(jasmine.Ajax.requests.mostRecent().url).toBe('fake/path2')
    expect(callback).toHaveBeenCalled() // faild
  })
})

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 11:27:22

问题是,asynFn异步,在执行expect语句后调用回调y。

以为你考得像历史一样。

  • 被测试对象(描述)
  • 执行asynFn时(beforeEach)
  • 然后:应该调用一个方法或回调(it)。

将代码更改为:

代码语言:javascript
复制
  beforeEach(function() {  
    callback = jasmine.createSpy('sendResponse');  
    asynFn('input string', callback);  
  });

 afterEach(function() {
    callback = null;
 });

  it('a spec', function() {
    expect(jasmine.Ajax.requests.mostRecent().url).toBe('fake/path2')
    expect(callback).toHaveBeenCalled() // faild
  })

如果第一种方法不起作用,请尝试如下:

代码语言:javascript
复制
 beforeEach(function(done) {  
      callback = jasmine.createSpy('sendResponse');  
      asynFn('input string', function() {
          callback();
          done(); //<-- This tells jasmine tha async beforeEach is finished
      });  
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33869485

复制
相关文章

相似问题

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