如何测试异步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"
尽管预期数据与提供的数据不同,但测试通过。我怀疑没有人去拿?请有人建议我如何让这个工作,或以其他更好的方式来测试这个功能?谢谢