Angular,Karma,tsify,woes

时间:2016-09-13 00:28:48

标签: angularjs karma-runner browserify tsify

我正在尝试设置测试,我们使用的是Angular 1.5,TSify和Karma。我很亲密,但是我遇到了一个我不太正确的问题:

我正在按照此处描述的设置进行操作:https://github.com/cmlenz/tsify-test(此示例不包括角度)

我从angular-mocks中收到错误:“无法设置未定义的属性'mock'

那必须是计时事物或范围事物 - 角度模拟加载太快,或者浏览器正在包含角度变量的范围,并且模拟无法看到它。不知道。

以下是我的karma.conf.js文件的相关部分:

    frameworks: ['browserify', 'jasmine'],

    files: [
        'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js',
        './node_modules/angular-mocks/angular-mocks.js',
        './modules/**/*.spec.ts'
    ],

    exclude: [],

    preprocessors: {
        '**/*.ts': 'browserify'
    },

    browserify: {
        debug: true,
        plugin: [
            ['tsify']
        ]
    },

这必须与我加载模拟的方式有关 - 我的角度应用程序没有使用它,只是测试,因此必须与它有关。

任何提示?

1 个答案:

答案 0 :(得分:1)

angular-mocks需要在angular之后加载,并且当前的Karma配置中没有发生 - angular在您需要加载时才会加载.ts其中一个.spec.ts文件所依赖的angular个文件之一。

一种解决方案是添加一个同时需要angular-mocks.spec.ts的附加文件,并确保该文件位于Karma files中的require-angular-mocks.js个文件之前配置。

例如,可以创建名为require('angular'); require('angular-mocks'); 的文件:

angular-mocks

可以添加到Karma配置中(替换node_modules下的files: [ 'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js', './require-angular-mocks.js', './modules/**/*.spec.ts' ], preprocessors: { '**/*.js': 'browserify', '**/*.ts': 'browserify' }, ):

angular

这应该确保以正确的顺序加载angular-mocks.js并在您的规范之前加载。请注意,如果它是preprocessors文件,则您需要在Karma的{{1}}配置中添加其他条目。