我从昨天开始就一直在墙上敲门(昨晚只被布鲁斯·斯普林斯汀演唱会打断了......; - )
我正在尝试将一些JS测试添加到现有(Rails)项目中。基本上文件夹结构是这样的:
.
├── app
│ └── assets
│ └── javascripts
│ └── strftime.js
└── spec
├── buster.js
└── javascripts
└── strftime.test.js
在这个非常简单的例子中,我从这里https://gist.github.com/cjohansen/1904218采取了破坏者的例子,以确保在移动文件之前一切正常。
我的 buster.js 看起来像这样:
var config = exports;
config["Server tests"] = {
// sources: ["../app/assets/javascripts/strftime.js"],
tests: ["javascripts/strftime.test.js"],
env: "node"
};
我尝试将 strftime.test.js 的前5行修改为:
if (typeof require == "function" && typeof module == "object") {
buster = require("buster");
require("../app/assets/javascripts/strftime.js");
}
目前,当我进行破坏测试时,我得到了这个:
$ buster test
Failed requiring ./spec/javascripts/strftime.test.js: Cannot find module '../app/assets/javascripts/lib/strftime.js'
如果我尝试取消注释来源行, buster test 会无声地失败 - 即使我尝试以高调试级别运行它。
我已将整个示例(2 KB)压缩并放在此处,如果有人想尝试尝试一下:http://gehling.dk/b2.zip
更新:我已成功通过提供相对于test-js文件的路径来成功要求js文件:
if (typeof require == "function" && typeof module == "object") {
buster = require("buster");
require("../../app/assets/javascripts/strftime.js");
}
但是如果添加sources参数,我仍然会遇到破坏失败的问题。
TIA
/ Carsten
答案 0 :(得分:2)
在您的压缩buster.js
中,您在“来源”元素中引用了一个不存在的lib
目录:
var config = exports;
config["Server tests"] = {
// sources: ["../app/assets/javascripts/lib/strftime.js"],
tests: ["javascripts/strftime.test.js"],
env: "node"
};
您还可以在lib
中引用相同的strftime.test.js
目录。
将buster.js
更改为如下所示:
var config = exports;
config["Server tests"] = {
rootPath: "../",
environment: "node",
sources: ["app/assets/javascripts/strftime.js"],
tests: ["spec/javascripts/strftime.test.js"],
};
将strftime.test.js
中的require语句更改为:
require("../../app/assets/javascripts/strftime.js");
在buster-test
目录中使用spec
运行测试时,您将尝试运行某些测试:
$ spec buster-test
Failure: Date strftime tests %j should return the day of the year
...
请注意,不要忘记使用npm link buster
将破坏者链接到您的项目。