如何测试异步JavaScript函数:Promises、Jasmine、PhantomJS

如何测试异步JavaScript函数:Promises、Jasmine、PhantomJS,javascript,unit-testing,asynchronous,jasmine,phantomjs,Javascript,Unit Testing,Asynchronous,Jasmine,Phantomjs,我正在尝试为从服务器检索数据的函数设置单元测试。我想测试函数是否返回了预期的数据。下面是函数: getData: -> url = api.getURL "data" fetch url 现在我使用fetch来获取数据,这将返回一个承诺,因此我将像这样使用该函数: @getData() .then (response)-> response.json() .then (data) -> //do stuff with 'data' 我正在用Karm

我正在尝试为从服务器检索数据的函数设置单元测试。我想测试函数是否返回了预期的数据。下面是函数:

getData: ->

    url = api.getURL "data"
    fetch url
现在我使用fetch来获取数据,这将返回一个承诺,因此我将像这样使用该函数:

@getData()
.then (response)->
  response.json()
.then (data) ->
  //do stuff with 'data'
我正在用Karma和Jasmine和PhantomJS运行单元测试。PhantomJS目前不支持fetch或promises,所以我使用polyfills(同构fetch和Q)。这就是我的测试套件的外观:

fetch = require "isomorphic-fetch"
Q = require "q"

describe "Module", ->

  myModule = require "./module.coffee"

  it "should get data", ->
    dfd = Q.defer()
    promise = dfd.promise
    spyOn(window, "fetch").and.callFake ->
      promise

    dfd.resolve
      test: "not ok"

    myModule.getData()
      .then (response) ->
        response.json()
      .then (data) ->
        expect(data).toEqual
          test: "ok"
尽管预期数据与提供的数据不同,但测试通过。我怀疑没有人去拿?请有人建议我如何让这个工作,或以其他更好的方式来测试这个功能?谢谢