首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行类型记录单元测试时,PhantomJS 'window.Promise是未定义的‘

运行类型记录单元测试时,PhantomJS 'window.Promise是未定义的‘
EN

Stack Overflow用户
提问于 2017-04-02 14:25:57
回答 1查看 1.1K关注 0票数 0

我正在尝试运行类型记录类的单元测试,但是当连接到PhantomJS浏览器时,我遇到了一个错误。下面我附加了一些我正在使用的配置。我想要实现的是用类型记录编写测试,并使用导入和箭头函数等ES6特性。

karma.conf.js

代码语言:javascript
复制
module.exports = function (config) {
    config.set({
        basePath: '',
        frameworks: ['systemjs', 'jasmine'],
        plugins: [
            'es6-module-loader',
            'karma-systemjs',
            'karma-jasmine',
            "karma-spec-reporter",
            "karma-phantomjs-launcher"
        ],
        files: [
            'app/test/**/*.spec.ts',
        ],
        systemjs: {
            configFile: './karma.system.conf.js',
            config: {
                baseURL: './'
            },
            serveFiles: [
            ]
        },
        exclude: [],
        preprocessors: {},
        reporters: ['spec'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['PhantomJS'],
        singleRun: true,
        concurrency: Infinity
    })
}

karma.system.conf.js

代码语言:javascript
复制
System.config({
    paths: {
        'es6-module-loader': 'node_modules/es6-module-loader/dist/es6-module-loader.js',
        'jasmine': 'node_modules/karma-jasmine/*',
        systemjs: 'node_modules/systemjs/dist/system.js',
        typescript: 'node_modules/typescript/lib/typescript.js',
        'plugin-typescript': 'node_modules/plugin-typescript/lib/plugin.js'
    },
    meta: {
        '*.ts': {
            format: 'es6'
        }
    },
    packages: {
        'app/': { defaultExtension: 'ts' }
    },
    transpiler: 'typescript',
});

“业力启动”输出

代码语言:javascript
复制
PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
ReferenceError: Can't find variable: Promise
at node_modules/systemjs/dist/system.js:5

PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 0 of 0 ERROR (0.042 secs / 0 secs)

PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR LOG: 'Error: Not setup properly.  window.Promise is undefined'

有人知道这个设置有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-03 14:57:58

所以,我想我终于自己解决了我的问题。对我起作用的配置是:

karma.conf.js

代码语言:javascript
复制
module.exports = function (config) {
    config.set({
        basePath: '',
        frameworks: ['systemjs', 'jasmine'],
        plugins: [
            'karma-systemjs',
            'es6-module-loader',
            'karma-jasmine',
            "karma-spec-reporter",
            "karma-phantomjs-launcher"
        ],
        files: [
            {pattern: 'app/**/*.ts', included: false, watched: true},
            {pattern: 'node_modules/systemjs/dist/system-polyfills.js', included: true, watched: true},
            'app/test/**/*.spec.ts',
        ],
        systemjs: {
            configFile: './karma.system.conf.js',
            config: {
                baseURL: ''
            },
            serveFiles: [
            ]
        },
        exclude: [],
        preprocessors: {},
        reporters: ['spec'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['PhantomJS'],
        singleRun: true,
        concurrency: Infinity
    })
}

karma.system.conf.js

代码语言:javascript
复制
System.config({
    paths: {
        'systemjs': 'node_modules/systemjs/dist/system.js',
        'system-polyfills': 'node_modules/systemjs/dist/system-polyfills.js',
        'es6-module-loader': 'node_modules/es6-module-loader/dist/es6-module-loader.js',
        'jasmine': 'node_modules/karma-jasmine/*',
        typescript: 'node_modules/typescript/lib/typescript.js',
        'plugin-typescript': 'node_modules/plugin-typescript/lib/plugin.js',
        'phantomjs-polyfill': 'node_modules/phantomjs-polyfill/bind-polyfill.js'
    },
    map: {
        'systemjs': 'node_modules/systemjs/dist/system.js',
        'system-polyfills': 'node_modules/systemjs/dist/system-polyfills.js',
        'es6-module-loader': 'node_modules/es6-module-loader/dist/es6-module-loader.js'
    },
    meta: {
        '*.ts': {
            format: 'es6'
        }
    },
    packages: {
        'app/': { defaultExtension: 'ts' }
    },
    transpiler: 'typescript',
});

当然,有必要安装带有npm安装的旧包。重要的是,出于某种原因,您必须使用0.19.24版本的systemjs。把它留给将来会面临同样问题的人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43169437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档