7
私のアプリケーションでは、date/timeにmoment.jsを使用していますが、Jasmineのモック機能ではうまく動作しないようです。私は問題を示す以下のテストスイートをまとめました:Date
の場合はうまく動作しますが、jasmine dateモーフィング(moment.js)
jasmine.clock().mockDate
のように動作していないようです。
describe('Jasmine tests', function() {
beforeEach(function() {
jasmine.clock().install();
});
afterEach(function() {
jasmine.clock().uninstall();
});
// Pass
it('uses the mocked time with Date', function() {
var today = new Date('2015-10-19');
jasmine.clock().mockDate(today);
expect(new Date().valueOf()).toEqual(today.valueOf());
});
// Fail
it('uses the mocked time with moment', function() {
var today = moment('2015-10-19');
jasmine.clock().mockDate(today);
expect(moment().valueOf()).toEqual(today.valueOf());
});
});
moment
にはないながら、期待通りになぜDate
動作しますか?フードの下にDate
を使用してmoment
はありませんか?
ヤスミンを使用してmoment
をモックする正しい方法は何ですか?
重要なメモ - テスト後の嘲笑された日付をリセットすることを忘れないでください! 'jasmine.clock()。mockDate(..)'を呼び出すAFAIKはグローバルアクションですので、代わりに別の 'beforeEach'ブロックに設定(および設定解除)することをお勧めします。その後、 'afterEach'ブロックで' jasmine.clock()。uninstall() 'を使って後で消去してください。 –