【发布时间】:2013-12-31 17:43:51
【问题描述】:
我正在创建我的第一个 Grunt 插件。我真的很想在开发时练习测试我的插件。我选择 mocha 作为我的测试框架,因为它看起来很流行,并设置我的 gruntfile 以自动监视测试文件何时更改并运行它们。这一切看起来都不错。
但是,我没有找到很多关于如何实际测试 Grunt 插件的文档。我查看了大约十几个不同的 grunt 插件的代码,尤其是 contrib 插件,它们对我来说没有多大意义。
当我尝试测试我的代码时,我试图将事情分解成非常具体的函数。因此,这是插件的基本结构,其中包含一个功能。
'use strict';
function testOutsideOfTask(){
return "i am outside";
}
module.exports = function(grunt) {
grunt.registerMultiTask('example_task', 'I do a thing.', function() {
function testInsideOfTask(){
return "i am inside";
}
});
};
我已经明确地包含了几个方法来确保我的测试正常工作,但事实并非如此。这些方法似乎都无法访问......我如何访问它们进行测试?这是我拥有的摩卡咖啡测试。
var grunt = require('grunt');
var assert = require("assert");
describe('testOutsideOfTask', function() {
it('do something', function() {
assert.equal("i am outside", testOutsideOfTask());
});
});
describe('testInsideOfTask', function() {
it('do something', function() {
assert.equal("i am inside", testInsideOfTask());
});
});
他们都返回这样的东西。所以,不知何故,它只是无法访问这些功能,但是,当我查看其他测试示例时,它们似乎并不特别需要正在测试的文件......例如https://github.com/gruntjs/grunt-contrib-clean/blob/master/test/clean_test.js
1) testOutsideOfTask should do something:
ReferenceError: testOutsideOfTask is not defined
非常感谢!
【问题讨论】:
-
我很好奇 - 你的 grunt 插件要做什么? (题外话,我知道)
-
我的插件将使用站点地图 url ping google 和 bing。非常非常简单,但我想通过测试学习如何正确地做到这一点:)
-
你找不到你的函数的原因是你需要
require这个函数的文件。您还需要通过模块定义导出它。p=require('myplugin');p.outsideFunction()
标签: javascript gruntjs mocha.js