是否可以运行使用requirejs模块的js-test-driver测试?

时间:2012-09-18 17:30:59

标签: requirejs js-test-driver

我一直在尝试使用requirejsjs-test-driver,我无法让它发挥作用。

我在root上有这样的最小配置:

server: http://localhost:9876

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

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

A" src / main / js / greeter.js" file定义了一个愚蠢的模块:

define(function(require) {

  myapp = {};

  myapp.Greeter = function() {
  };

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

  return myapp;
});

我试图让#require /#34; 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。

在这种情况下,我可以配置一种方法吗?我试过了:

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

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

由于

1 个答案:

答案 0 :(得分:1)

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

  • js-test-driver具有'serve'设置,可让测试服务器响应静态文件
  • 一旦提供,文件可在localhost:42442 / test / xxxx获得(除了在doc页面中的注释低之外,永远不会提到'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”文件夹位于同一级别的事实有关,并且 如果另外放置,可能需要进行一些调整。