2017-10-16 19 views
2

私はテストを作成しようとしていますが、テスト環境でmoment("2017-09-10")を実行するとモーメントオブジェクトが作成されないため、テストを作成できません。そのため、isBetweenは常にfalseです。酵素による試験モーメント

これは、これは私が "瞬間" を使用しています私のテスト

import moment from 'moment' 

describe('all dates',() => { 
    it('returns original statistics',() => { 
     const statistics = getOverviewStatistics('ctr')(overview) 
     const statDate = moment(statistics.first().get('date')) 
     const endDate = moment(statistics.last().get('date')) 

     const current = filteredStatistics(statistics, statDate, endDate) 
     const expected = statistics.toJS() 

     expect(current).toEqual(expected) 
     }) 
    }) 

ある

export const filteredStatistics = (data, startDate, endDate) => { 
    if(startDate === null || endDate === null) return data.toJS() 

    return data.filter(element => { 
    const date = moment(element.get("date")) 

    return date.isBetween(startDate, endDate, "days", "[]") 
    }).toJS() 
} 

私の機能である: "^ 2.19.1"、 "酵素":「^ 2.9.1 "、"反応する ":"^15.4.1 " どうすればテストできますか?オブジェクトとの差に

プリントコードを実行し、テストを実行して作成さ

にconsole.log:

console.log('date:', date, 'startDate:', startDate, 'endDate', endDate, 'betweenResult:', date.isBetween(startDate, endDate, 'days', '[]')) 

実行コード:
enter image description here

ランニング試験:

enter image description here

PS:私は

与えられた提案を使用するコードを更新し、私は、エラーが見つかりました:私は、終了日を2016年ではなく2017 u.u」申し訳ありませんが、助けてくれてありがとうみんなを入れていました!

+0

エラーが発生しますか?どのようにテストのための瞬間を定義していますか? – jmargolisvt

+0

@jmargolisvtエラーを投げているわけではありません。 empy配列を返すので、単純に渡されません。私はこのような瞬間を定義しています: 'moment'からのインポートモーメント – Marina

答えて

1
  1. モーメント2.19.1への更新。 2.19.0に関する問題があり、おそらくインポートに影響しています。

  2. moment(new Date(string))を使用しないでください。これはMomentの解析機能をバイパスし、代わりにDateオブジェクトの解析を使用します。これは劣っており、しばしば矛盾します。代わりにmoment(string)を使用するか、該当する場合はmoment(string, format)を使用してください。

+0

こんにちは、感謝の返答、しかしそれは仕事をしませんでした:(私は2.19.1に瞬間を更新し、新しい日付(文字列)を削除し、結果:/この記事では、この問題について少し説明していますが、私が使用するすべての日付を嘲笑したくありません。記事:http://dancork.co.uk/2015/12/07/ stubbing-moment/ – Marina

+0

画像を追加して結果を表示するコードを実行して問題を説明するテストを実行する – Marina

+0

あなたの画像はどこから来ているのか分かりにくいですが、私が見ることのできる値は 'false'でしょう正しい答えです。日付は 'startDate'と' endDate'の間にありません。 –

関連する問題