Promise.then没有在Jasmine中执行

时间:2018-04-06 04:08:41

标签: javascript jasmine

JavaScript - Jasmine测试框架问题

大家好,由于某种原因,helpers.getWeatherData返回一个promise但我无法用.then

来解决它

无法找到关于此的更多文档。

帮助会很棒!

import Jasmine from 'jasmine'
const jasmine = new Jasmine()
jasmine.loadConfigFile('spec/support/jasmine.json')
import helpers from '../src/lib/helpers'
import fetch from 'node-fetch'
import Promise from 'bluebird'

describe("Weather Service App", function() {
      const URL = `http://api.openweathermap.org/data/2.5/forecast?`;

      beforeEach(function(){
          console.log('hello')
          helpers.getWeatherData(URL).then((arr)=>{
          console.log(arr.length, 'length')
        })
      })

      console.log(helpers.getWeatherData(URL))

  it("Test API endpoint, return array of five objects", function() {

  });

});

jasmine.execute()

1 个答案:

答案 0 :(得分:0)

问题可能是beforeEach函数在异步处理时需要done作为参数。

它将运行beforeEach函数而不等待承诺完全执行。

要修复,你可以试试这个:

  beforeEach(function(done) {
      console.log('hello');
      helpers.getWeatherData(URL).then((arr) => {
        console.log(arr.length, 'length');
        done();
      })
  })

请参阅https://jasmine.github.io/2.4/introduction.html#section-Asynchronous_Support