1

我一直在尝试同时使用requirejsjs-test-driver,但我看不到它可以正常工作。

我在根目录有这样的最小配置:

server: http://localhost:9876

load:
 - src/main/resources/web/resources/vendor/requirejs/require.js

test:
 - src/test/js/*.js

“src/main/js/greeter.js”文件定义了一个愚蠢的模块:

define(function(require) {

  myapp = {};

  myapp.Greeter = function() {
  };

  myapp.Greeter.prototype.greet = function(name) {
    return "Hello " + name + "!";
  };

  return myapp;
});

我试图让 require 在 "src/test/js/greeterTest.js" 中加载欢迎模块:

GreeterTest = TestCase("GreeterTest");

require.configure({ ???? });
require([ "src/main/js/greeter" ], function(myapp) {

  GreeterTest.prototype.testGreet = function() {
    var greeter = new myapp.Greeter();
     assertEquals("Hello World!", greeter.greet("World"));
    };

});

每当我运行它时,我都会收到一个错误,因为在创建 Greeter 时未定义 myapp。

那么有没有办法在这种情况下配置 require ?我试过 :

  • 将 baseUrl 属性设置为类似 file:///.... 以提供文件的位置
  • 使用网关配置来代理 requirejs 可能执行的请求(尽管我没有运行服务器来提供 js 文件,所以我不得不再次使用 file:///)

还有什么我应该尝试的吗?

谢谢

4

1 回答 1

1

事实证明这是可能的,但记录不充分:

  • js-test-driver 有一个“服务”设置,可以让测试服务器响应静态文件
  • 提供后,文件可在 localhost:42442/test/xxxx 获得(“test”前缀从未被提及,除非在文档页面的评论下方)。

所以这有效:


server: http://localhost:9876

load:
  - src/main/resources/web/resources/vendor/requirejs/require.js

test:
  - src/test/js/*.js

serve:
  - src/main/js/*.js

并且 requirejs 必须像这样配置:


require({
    baseUrl : "/test/src/main/js"
}, [ "greeter" ], function(myapp) {

    GreeterTest = TestCase("GreeterTest");

    GreeterTest.prototype.testGreet = function() {
        var greeter = new myapp.Greeter();
        assertEquals("Hello World!", greeter.greet("World"));
    };

});

注意 :

  • 测试前的 /
  • 您必须重用“src/main/js”部分的事实;我想这与我的 jsTestDriver 配置与“src”文件夹位于同一级别的事实有关,如果以其他方式放置,它可能需要进行一些调整。
于 2012-09-19T12:41:47.167 回答