等待加载模块以执行它包含的测试

Wait for a module to be loaded to execute the tests it contains

我的单元测试包含在使用 SystemJS 从 HTML 页面加载的模块中。

<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>

<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>

<script>
  System.config({
    defaultJSExtensions: true,
    map: {
      "angular2": 'http://localhost:8000/angular2',
      "rxjs": 'node_modules/rxjs'
    },
    packages: {
      angular2: {
        defaultExtension: 'js',
      }
    }
  });
  System.import('angular2/test/http/backends/xhr_backend_spec')
    .then((src) => {
      src.main();
    });
</script>

我的页面不显示任何测试,而我的 main 方法包含一个测试套件:

export function main() {
  console.log('in main');
  describe('XHRBackend', () => {
    (...)
  });
}

我放置了一些痕迹,并检查是否调用了 main 函数和 describe 函数中定义的回调。但是测试本身并没有在 describe 回调中执行。

我想我需要等待模块在 运行 Jasmine 之前加载,但我不知道如何配置它。

感谢您的帮助!

告诉 Jasmine 运行 使用 导入的测试。然后 (window.onload)

<script>
  System.config({
  (...)
  System.import('angular2/test/http/backends/xhr_backend_spec')

      //  wait for all imports to load ...
      //  then re-execute `window.onload` which
      //  triggers the Jasmine test-runner start

     .then(window.onload)
     (...)
</script>

我阅读了如何 运行 angular.io

上的 Jasmine 测试

https://angular.io/docs/ts/latest/testing/first-app-tests.html