如何在AngularJS的Karma / Jasmine单元测试中使用momentJs?

时间:2019-04-16 10:29:15

标签: angularjs unit-testing momentjs karma-jasmine

我正在AngularJS项目中使用momentJS。

我正在尝试编写单元测试,但是我总是遇到一些问题。

这是我的配置文件:

// list of files / patterns to load in the browser
files: [
    // './bower_components/moment/min/moment.min.js',
    // './bower_components/moment-timezone/builds/moment-timezone.min.js',
    // './bower_components/moment/min/moment-with-locales.js',
    // './bower_components/moment-timezone/builds/moment-timezone-with-data.js',
    './bower_components/moment/moment.js',
    './bower_components/moment-timezone/moment-timezone.js',

    './source/builds/vendors.js',
    './node_modules/angular-mocks/angular-mocks.js',
    './source/builds/vendors.css',
    './source/builds/app.css',
    './source/builds/bundle.js',
    './source/js/**/*.spec.js'
],

我不断收到此错误: TypeError:moment(...)。year(...)。week不是函数

我不确定如何解决该错误。

1 个答案:

答案 0 :(得分:0)

首先要运行单元测试,我们需要检查的是是否将moment.js和angular-moment.js文件包含在配置文件中

files: [
    '../bower_components/moment/moment.js',
    '../bower_components/angular-moment/angular-moment.js',
]

之后在规格文件上

describe('Moment Tests', function() {
    var _moment;
    beforeEach(inject(function(moment) {
        _moment: moment
    }));
});


describe('Test for date by provided format', function (){

    it('should return date by provided format', function() {
        var expectedYear = _moment(new Date().year());
        expect(2019).toEqual(expectedDate);
    });
});

希望这会有所帮助。