jasmine - Karma 和 Jasmine 使用单词 'base' 时的奇怪行为

标签 jasmine phantomjs karma-runner karma-jasmine

我来这里寻求帮助,因为我无法找到解决方案,而且我在这方面花了很多时间。

这个问题是 karma + jasmine 测试中的一个奇怪的行为,最初我认为问题出在 AngularJs 代码中,但是,通过剥离,我达到了没有其他可以删除的地步,问题是 100% 没有有角度。

我使用的实际代码是这样的:

测试.js:

'use strict';

describe('Unit tests suite', function () {
    it('test', function () {
        expect('base').toEqual('');
    });
});

karma.conf.js:

module.exports = function (config) {
    config.set({
        basePath: '',
        frameworks: ['jasmine'],
        files: ['*.js'],
        exclude: [],
        preprocessors: {},
        reporters: ['progress'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['PhantomJS'],
        singleRun: false,
    })
}

绝对没有别的。该测试的结果是:

13 02 2016 04:32:39.559:WARN [karma]: No captured browser, open http://localhost:9876/
13 02 2016 04:32:39.571:INFO [karma]: Karma v0.13.15 server started at http://localhost:9876/
13 02 2016 04:32:39.578:INFO [launcher]: Starting browser PhantomJS
13 02 2016 04:32:41.248:INFO [PhantomJS 2.1.1 (Mac OS X 0.0.0)]: Connected on socket HiC4WW_4235Nlf0rAAAA with id 54292207
PhantomJS 2.1.1 (Mac OS X 0.0.0) Unit tests suite test FAILED
    Expected '/Users/Gianmarco/Desktop/test' to equal ''.
    /Users/Gianmarco/Desktop/test/test.js:5:31
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.003 secs / 0.003 secs)

正如您所看到的,“base”一词似乎随着文件夹的路径而改变。这让我抓狂,我不明白为什么要这样做。

我在 MacOSX 和 Ubuntu 14.04 上都尝试过,结果是相同的。

为了准备文件夹,我这样做了:

mkdir test
cd test
npm install jasmine-core karma-cli karma-jasmine karma-phantomjs-launcher phantomjs-prebuilt --save
karma init
karma start

当然,我的系统不久前有一个npm install karma-cli -g

版本是:

jasmine-core@2.4.1
karma@0.13.21
karma-cli@0.1.2
karma-jasmine@0.3.7
karma-phantomjs-launcher@1.0.0
phantomjs-prebuilt@2.1.4

使用“绝对”一词获得相同的行为,将其替换为空字符串

最佳答案

我相信这是 karma (进展)中默认报告器的问题,似乎 URL_REGEX 匹配基本和绝对,因为所有其余正则表达式都是可选的。

var URL_REGEXP = new RegExp('(?:https?:\\/\\/[^\\/]*)?\\/?' +
    '(base|absolute)' + // prefix
    '((?:[A-z]\\:)?[^\\?\\s\\:]*)' + // path
    '(\\?\\w*)?' + // sha
    '(\\:(\\d+))?' + // line
    '(\\:(\\d+))?' + // column
    '', 'g')

https://github.com/karma-runner/karma/blob/684ab1838c6ad7127df2f1785c1f56520298cd6b/lib/reporter.js#L25

关于jasmine - Karma 和 Jasmine 使用单词 'base' 时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375808/

相关文章:

angularjs - Jasmine /AngularJS : Inject dependent service to service in unit test?

angular - 如何测试(Jasmine)服务实际处理模拟 HTTP 错误的错误

css - 调试 PhantomJS @font-face 问题

phantomjs - 停止 Casper JS 中的导航请求

javascript - 使用不同的对象调用 Jasmine 测试

javascript - 是否有命令行标志可以禁用 Chrome 的 JavaScript 源映射?

angular - VSCode 终端中的 "Ctrl + click to follow link"没有跳转到源文件而是打开新的浏览器选项卡

angularjs - 将 Jasmine spyOn 与 $resource 一起使用

javascript - 在 AngularJS Controller 规范中测试来自服务的回调

css - Phantomjs 中的 Flexbox 支持可在 html2ng node.js 中使用