用茉莉花测试angularjs es6工厂

时间:2017-12-25 12:11:53

标签: angularjs ecmascript-6 jasmine

我有以下文件:classAModel.js,代码如下:

class classAModel{
constructor(model) {
    'ngInject';
    if (!model) return {};
    this.id = model.id;
    this.name = model.name;
    this.displayName = model.displayName;
}
}
export default classAModel;

此代码在另一个文件中定义为工厂:module.js:

import classAModelfrom './classAModel'
module.factory('ClassAModel', ClassAModel);

此代码在不在测试环境中时非常有效。它使用Webpack创建一个加载并运行的包。到现在为止还挺好。现在,问题是如何测试这个类。在我将代码更改为es6样式之前,它使用的是一个函数,它起作用。测试首先加载捆绑包,但是当我尝试注入工厂时(再次,与之前相同),我收到错误:未知提供者:modelProvider< - model< - classAModel 。我能理解为什么他认为存在问题,但我无法理解如何修复它。

此外,我想知道这是否是正确使用工厂的方法,而不是在类中创建一个工厂方法,获取模型,然后创建我的对象。

由于

1 个答案:

答案 0 :(得分:0)

根据您提供的信息,这是一个测试工厂的简单测试用例。希望这是你正在寻找的。

import classAModel from './classAModel'

let classAInstance;
describe('classAModel', function() {

    beforeEach(function() {
        modelInstance = new Model();
        classAInstance = new classAModel(modelInstance);
    });

    it('should have id provided by model', () => {
        expect(classAInstance.id).toBe(modelInstance.id);
    });
});