首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Require的JavaScript上运行Grunt上的茉莉测试

在使用Require的JavaScript上运行Grunt上的茉莉测试
EN

Stack Overflow用户
提问于 2014-07-16 11:08:59
回答 1查看 3.6K关注 0票数 0

我在写一些关于房客的扩展。与此问题相关的代码可以从这里下载。其结构是代码位于/shared/modules/myExtensions.js中。目前,我的代码非常基本,如下所示:

代码语言:javascript
复制
'use strict';

var _ = require('lodash');
_.mixin({
  'myFunction' : function(s) {
    return 'Hello ' + s; 
  }
});

module.exports = _;

我的代码会变得越来越复杂。因此,我想从一开始就设置单元测试。现在,我的测试位于/shared/test/myExtensions.tests.js。该文件如下所示:

代码语言:javascript
复制
'use strict';

describe('myModule', function() {
  it('should work', function() {
    expect(true).toBe(true);
  });
});

这个测试总是断言为真。我正试着通过咕哝来做茉莉花测试。当我通过Grunt执行这个命令时,我会得到一个错误。这个错误使我感到困惑,因为grunt-jasmine节点模块是在我的package.json文件中定义的。我还检查了当我运行npm安装时它是否被下载了。不管是哪种方式,这里都是错误:

代码语言:javascript
复制
>> Local Npm module "grunt-jasmine-node" not found. Is it installed?

Running "jasmine:testShared" (jasmine) task
Testing jasmine specs via PhantomJS

>> Error: notloaded: Module name "../" has not been loaded yet for context: _. Use require([])
>> http://requirejs.org/docs/errors.html#notloaded at
>> ..\..\C:\Tests\jasmine\_SpecRunner.html:21
>> ..\..\C:\Tests\jasmine\.grunt\grunt-contrib-jasmine\require.js:12 v
>> ..\..\C:\Tests\jasmine\.grunt\grunt-contrib-jasmine\require.js:26 h
>> ..\..\C:\Tests\jasmine\.grunt\grunt-contrib-jasmine\require.js:31
>> ..\..\C:\Tests\jasmine\node_modules\glob\examples\g.js:1
>> Error: notloaded: Module name "../" has not been loaded yet for context: _. Use require([])
>> http://requirejs.org/docs/errors.html#notloaded at
>> ..\..\C:\Tests\jasmine\_SpecRunner.html:21
>> ..\..\C:\Tests\jasmine\.grunt\grunt-contrib-jasmine\require.js:12 v
>> ..\..\C:\Tests\jasmine\.grunt\grunt-contrib-jasmine\require.js:26 h
>> ..\..\C:\Tests\jasmine\.grunt\grunt-contrib-jasmine\require.js:31
>> ..\..\C:\Tests\jasmine\node_modules\glob\examples\usr-local.js:1
>> ReferenceError: Can't find variable: module at
>> ..\..\C:\Tests\jasmine\node_modules\glob\glob.js:37
>> Error caught from PhantomJS. More info can be found by opening the Spec Runner in a browser.
Warning: SyntaxError: Parse error Use --force to continue.

Aborted due to warnings.

太让人沮丧了。我的代码可以从这里下载。我已经做了两天了。如果我今天做不到,我就得回.NET了。有人能帮我解决这个问题吗?我真的很想继续朝这个方向前进。我相信这只是一个很小的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-18 11:46:51

正如安迪所指出的,grunt-jasmine-node不是在package.json中定义的。

您可以使用将修复该错误的命令npm-install --save grunt-jasmine-node来定义和安装它。

这个问题可能与https://github.com/gruntjs/grunt/issues/232有关。

此外,您可能希望分离开发依赖项和正常依赖项。

npm install --save-dev module在“devDependencies”配置中包括模块,以及

npm install --save module包括dependencies配置中的模块和package.json中的模块。

我希望这能解决你的问题,我在找那500个赏金。

编辑

编辑:

而且,在我看来,您将客户端库与服务器端混合在一起。

也就是说,您包括这样的供应商路径:

文件:任务/选项/jasmine.js

代码语言:javascript
复制
options: {
         specs: "shared/tests/unit/**.tests.js",
         // server libs
         vendor: "node_modules/**/*.js",
         // should be browser libs
         // vendor: "shared/libs/lodash/dist/lodash.js",
         }

所有的node_modules文件夹都包含在浏览器中。实际上,您应该做的是在shared/libs中定义库,并为vendor选项使用该路径。

您可以使用保龄球自动安装。

最后是你的实际代码,

代码语言:javascript
复制
var _ = require('lodash');
_.mixin({
  'myFunction' : function(s) {
    return 'Hello ' + s;
  }
});

module.exports = _;

这也是服务器端代码,加载到浏览器中。你应该把这个写在浏览器上。

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

https://stackoverflow.com/questions/24779226

复制
相关文章

相似问题

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