2015-07-23 14 views
13

Tôi muốn xác minh rằng các trường ngày khác nhau đã được cập nhật đúng cách nhưng tôi không muốn gây rối với dự đoán khi nào new Date() được gọi. Làm thế nào để tôi tạo ra hàm tạo Date?Tôi làm cách nào để tạo Ngày mới() bằng sinon?

import sinon = require('sinon'); 
import should = require('should'); 

describe('tests',() => { 
    var sandbox; 
    var now = new Date(); 

    beforeEach(() => { 
    sandbox = sinon.sandbox.create(); 
    }); 

    afterEach(() => { 
    sandbox.restore(); 
    }); 

    var now = new Date(); 

    it('sets create_date', done => { 
    sandbox.stub(Date).returns(now); // does not work 

    Widget.create((err, widget) => { 
     should.not.exist(err); 
     should.exist(widget); 
     widget.create_date.should.eql(now); 

     done(); 
    }); 
    }); 
}); 

Trong trường hợp đó là có liên quan, những thử nghiệm đang chạy trong một ứng dụng nút và chúng tôi sử dụng nguyên cảo.

Trả lời

33

tôi nghi ngờ bạn muốn useFakeTimers chức năng:

var now = new Date(); 
var clock = sinon.useFakeTimers(now.getTime()); 
//assertions 
clock.restore(); 

Đây là đồng bằng JS. Ví dụ về TypeScript/JavaScript hoạt động:

var now = new Date(); 

beforeEach(() => { 
    sandbox = sinon.sandbox.create(); 
    clock = sinon.useFakeTimers(now.getTime()); 
}); 

afterEach(() => { 
    sandbox.restore(); 
    clock.restore(); 
}); 
+0

Tuyệt vời, có vẻ như nó làm những gì tôi cần. Một khi tôi nhận được một phiên bản cuối cùng làm việc, tôi sẽ chỉnh sửa nó vào câu trả lời của bạn và chấp nhận nó. – MrHen

Các vấn đề liên quan