通过Jasmine测试JavaScript文件

通过Jasmine测试JavaScript文件,javascript,jasmine,Javascript,Jasmine,我试图学习如何使用Jasmine对JavaScript文件进行单元测试。现在,我有以下几点 /dist/MyJavaScriptFile.min.js function MyClass() {} module.exports = MyClass; MyClass.prototype.test = function(msg) { console.log(msg); }; describe('MyClass', function() { beforeEach(function()

我试图学习如何使用Jasmine对JavaScript文件进行单元测试。现在,我有以下几点

/dist/MyJavaScriptFile.min.js

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

MyClass.prototype.test = function(msg) {
    console.log(msg);
};
describe('MyClass', function() {
    beforeEach(function() {
        module('MyClass');
    });

    describe('Test', function () {
        it('should write a message', function() {
          MyClass.test('hello from the test.');
        });
    });
});
我想用Jasmine测试这个类中的函数。为了做到这一点,我有以下几点:

/test/unit/MyJavaScriptFile.spec.js

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

MyClass.prototype.test = function(msg) {
    console.log(msg);
};
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.js
MyClass
没有作为依赖项加载。我以为我是用
模块('MyClass')来实现的行。但是,我不知道.spec.js文件或Jasmine测试运行程序如何知道
MyClass
定义的位置。我做错了什么?

对于gulp jasmine的测试,我已经包含了我的js代码,要按照我的规范进行测试,使用如下方式:

// Path is relative to specs location
var someLibToTest = require('path/to/my/js/file'); 
至于在这里使用commonjs模块语法,也可以用同样的方法。
但这只适用于控制台测试,而不适用于浏览器。

您是否使用gulp jasmine,以及该语法的来源:模块('MyClass');也许是某种新的js模块系统?是的,我使用的是
gulp jasmine
。你的js使用的是browserify吗?我没有使用browserify。我完全是从命令行运行测试的。我认为它更接近。现在,我得到一个错误,上面写着
TypeError:undefined不是一个函数
。我添加了
var MyLibrary=require('path/to/file')在我的spec.js文件的顶部。然后,在测试中,我添加了
if(MyLibrary){console.log('library loaded');}else{console.log('no library');}MyLibrary.test('hello from the test')执行此代码时,我看到加载了
,然后是错误。因此,库正在加载,但是函数没有加载。这对我来说没有意义。当你像这样编写smth:MyClass.prototype.test=function(){…}时,这意味着你为MyClass的实例添加了一个方法,但没有添加到MyClass。所以试试var my_inst=new MyClass();然后是我的仪器测试(“…”);很难找到关于如何通过节点使用Jasmine测试独立JavaScript文件的线索。我真不敢相信这有多难。