2017-04-07 12 views
0

私はnode-geocoder npmパッケージを使用して、オブジェクトの位置の緯度と経度を取得しようとしています。JavaScriptを返す約束した値を拒否しました

JavaScriptの約束を理解してください。

import nodeGeocoder from 'node-geocoder' 

function getLocation (str) { 
    // Selecting Google as provider 
    const geocoder = nodeGeocoder({ 
     provider: 'google', 
    }) 

    return geocoder.geocode(str) 
     .then(response => { 
      // I want to return latitude an longitude 
      return [response[0].latitude, response[0].longitude] 
     }) 
     .catch(error => { 
      console.log(`Geocoder Error: ${ error }`) 
     }) 
} 

export default getLocation 

Soが:ここ

は、例えば、コードされ

import getLocation from './index' 

test('Checking',() => { 
    expect(getLocation('29 champs elysée paris')).toEqual([48.8698679, 2.3072976]) 
}) 

私はちょうど約束のステータス{"fulfillmentValue": undefined, "isFulfilled": false, "isRejected": false, "rejectionReason": undefined}を取得し、このテストを使用しようとしている:これはテスト(冗談フレームワーク)です。

しかし、私はちょうど約束の結果を得る必要があります。どうしたらいいですか?私はテストのためにテスト

+0

まだ到着していない結果を返すことはできません。あなたが達成しなければならない約束を待ちます。 – Bergi

答えて

1

を編集したくない

、ほとんどのテストスイートは、すべてあなたの約束ベースのテストのための非同期コールバックを提供します。私はこのように動作するように(しゃれが意図し)、それを期待する:

import getLocation from './index' 

test('Checking', (done) => { 
    getLocation('29 champs elysée paris').then(geoData => { 
    expect(geoData).toEqual([48.8698679, 2.3072976]); 
    done(); 
    }).catch(error => { 
    done(error) 
    }); 
}); 

あなたが使用している可能性テストフレームワーク、あなたがリゾルバコールバック(すなわち:done())を呼び出す方法に応じて変更することができます。しかし、パターンは多かれ少なかれ同じでなければなりません。

+0

しかし私はテストを更新したくありません。あなたのテストで配列から値を変更した場合 - テストも正常に受け継がれます –

+0

どのテストフレームワークを使用していますか? – Bwaxxlo

関連する問題