javascript - 通过 Jasmine 测试 JavaScript 文件

标签 javascript jasmine

我正在尝试学习如何使用 Jasmine 对 JavaScript 文件进行单元测试。此时我有以下内容

/dist/MyJavaScriptFile.min.js

function MyClass() {}
module.exports = MyClass;

MyClass.prototype.test = function(msg) {
    console.log(msg);
};

我想使用 Jasmine 测试此类中的函数。为了尝试做到这一点,我有以下内容:

/test/unit/MyJavaScriptFile.spec.js

describe('MyClass', function() {
    beforeEach(function() {
        module('MyClass');
    });

    describe('Test', function () {
        it('should write a message', function() {
          MyClass.test('hello from the test.');
        });
    });
});

当我尝试从 Gulp 运行这些测试时,出现错误。错误是:

Failures: 
1) MyClass Test should write a message
1.1) TypeError: object is not a function

我认为发生这种情况是因为 /dist/MyJavaScriptFile.min.jsMyClass 未作为依赖项加载。我以为我是用 module('MyClass'); 行来做到这一点的。但是,我不知道 .spec.js 文件或 Jasmine 测试运行程序如何知道 MyClass 定义的位置。我做错了什么?

最佳答案

为了使用 gulp-jasmine 进行测试,我已经包含了我的 js 代码,以便使用如下内容来测试我的规范:

// Path is relative to specs location
var someLibToTest = require('path/to/my/js/file'); 

至于你这里使用commonjs模块语法,你可以用同样的方式来做。 但这仅适用于控制台测试,不适用于浏览器。

关于javascript - 通过 Jasmine 测试 JavaScript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31477913/

相关文章:

Javascript 循环引用异常

javascript - Jasmine 测试随机失败

AngularJS 覆盖要使用 jasmine 进行单元测试的服务的资源依赖性

JavaScript 未显示正确的图像

javascript - 您应该在全局范围内使用 'var' 还是 'let'?

javascript - 如何在指令上测试 Angular $destroy 事件?

javascript - 如何在 javascript 单元测试期间加载二进制文件?

jquery - 前端代码的 BDD?

javascript - 不使用工作区的 yarn nohoist

javascript - 单击类 x 的 div 时,将类 active 添加到类 x 的另一个 div