3

从昨天开始我就一直在用头撞墙(昨晚只是被布鲁斯·斯普林斯汀的一场精彩的音乐会打断了...... ;-)

我正在尝试将一些 JS 测试添加到现有的(Rails)项目中。基本上文件夹结构是这样的:

.
├── app
│   └── assets
│       └── javascripts
│           └── strftime.js
└── spec
    ├── buster.js
    └── javascripts
        └── strftime.test.js

在这个非常简单的示例中,我从这里https://gist.github.com/cjohansen/1904218获取了 buster 示例,以确保在移动文件之前一切正常。

我的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 测试时,我得到了这个:

$ buster test
Failed requiring ./spec/javascripts/strftime.test.js: Cannot find module '../app/assets/javascripts/lib/strftime.js'

如果我尝试取消注释行,buster 测试会静默失败 - 即使我尝试以高调试级别运行它。

我已将整个示例 (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");
}

但是如果我添加源参数,我仍然会遇到 buster 静默失败的问题。

TIA

/ 卡斯滕

4

1 回答 1

2

在您的压缩文件中,您在“源”元素中buster.js引用了一个不存在的目录:lib

var config = exports;

config["Server tests"] = {
    // sources: ["../app/assets/javascripts/lib/strftime.js"],
    tests: ["javascripts/strftime.test.js"],

    env: "node"
};

您还引用libstrftime.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"],
};

并通过将 require 语句更改为strftime.test.js

require("../../app/assets/javascripts/strftime.js");

buster-test从目录中运行测试spec,你会得到 buster 尝试运行一些测试:

$ spec  buster-test
Failure: Date strftime tests %j should return the day of the year
...

Ps,不要忘记将 buster 链接到您的项目npm link buster

下载固定文件: http ://speedyshare.com/FGvCe/b2.tar.gz

于 2014-02-24T17:11:12.723 回答