【问题标题】:How to test TypeScript + browsersify files with jasmine?如何使用 jasmine 测试 TypeScript + browsersify 文件?
【发布时间】:2016-06-17 20:31:29
【问题描述】:

我有一些 TypeScript 文件。我使用browsersify 将所有这些文件融合到一个bundle.js 中(在gulp 中使用tsify)。

所以我的/src 中有一些.ts,我的/build 中有一个bundle.js

现在我想测试一下。最好使用jasminekarma

我不明白我应该怎么做。 Jasmine 不能使用.ts 也不能使用最终的build.js(显然)。 我也不明白覆盖范围如何与此技术堆栈一起使用。

你能给我一些提示来运行我的茉莉花测试吗?它应该是什么样的架构?

谢谢

---- 编辑-----

所以我尝试将 build.js 包含到我的业力中

files: [
    'build/**/*.js',
    'spec/**/*.spec.js'
]

但是里面的Object怎么用呢? 我在 TypeScript 中有一个“单元”类。 Browsersify 似乎在匿名函数中创建了一个类似的结构

var Unit = (function () {
    function Unit() { 
    }
    return Unit;
}()); 

但是范围不允许我从外部访问它(我没有找到如何)。 因此,当我对 jasmine 执行新的 User() 时,出现以下错误。

ReferenceError:找不到变量:单位

【问题讨论】:

    标签: typescript gulp jasmine browserify


    【解决方案1】:

    您需要使用 karma 和 Karma-jasmine 模块加载该 bundle.js(假设它包含您的测试)以运行测试。如果你想要覆盖报告,那么你应该为你的 bundle.js 生成源映射。使用源地图,您可以在运行测试后使用 remap-istanbul 模块。它将为您的打字稿文件生成覆盖率数据。

    【讨论】:

    • 已在帖子中回答。我不知道如何访问 browsersify 匿名函数的内容。 “假设它包括您的测试”是什么意思?
    • 我的意思是你应该在 bundle.js 中包含测试文件
    • build.js(或 bundle.js)应该是最终的生产文件。而且您不想将测试放在您将包含在 index.html 文件中的文件中,对吗?我不确定。
    • 应该有 2 个包:一个用于生产,一个用于测试。
    • 有一个模块 karma-browserify。你试过吗? github.com/nikku/karma-browserify 的自述文件中的示例应该可以正常工作。您只需要在其中添加打字稿预处理器
    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2015-12-07
    • 2017-11-22
    • 1970-01-01
    相关资源
    最近更新 更多