我正在尝试为从服务器检索数据的函数设置单元测试。我想测试该函数返回的预期数据。这是功能:
getData: ->
url = api.getURL "data"
fetch url
现在我使用fetch来获取数据,因此返回一个promise,所以我会使用这样的函数:
@getData()
.then (response)->
response.json()
.then (data) ->
//do stuff with 'data'
我使用Karma与Jasmine和PhantomJS进行单元测试。 PhantomJS目前不支持获取或承诺,所以我使用polyfill(同构提取和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"
尽管预期数据与提供的数据不同,但测试通过了。我怀疑取得的是不是?请有人建议我如何让这个工作,或者更好的方法来测试这个功能?感谢。