Intern JS - 测试定义之前的异步挂钩?

Intern JS - asynchronous hook before test definition?

我想在定义测试之前执行异步操作。例如,加载 jsdom 环境。 这样做时,实习生运行 0 次测试。 这样做的正确方法是什么? 我不能在配置本身中执行此操作,因为需要加载配置才能让实习生找到 jsdom.

我的实习生配置加载了以下文件:

define( [
        "intern/dojo/node!jsdom"
    ], function(
        jsdom
    )
{
    "use strict";

    var body = "";
    var scripts = [];

    jsdom.env( body, scripts, function( err, window )
    {
        define( [
            "./test_MyRenderer",
            ], function()
        {
        } );
    } );
} );

test_Renderer,定义实际测试

define( [
        "intern!bdd",
        "intern/chai!expect",

        "src/Renderer"
    ], function(
        bdd,
        expect,

        Renderer
    )
{
"use strict";

bdd.describe( "Renderer", function()
{
    it( ...
    it( ...
} ); 

实习生配置文件可以有 setupteardown 方法,就像测试套件一样。这些将是 运行 测试开始之前和测试结束之后。这是一个官方的,但目前还没有完整记录的功能。

感谢@jason0x43,我发现了 config.setup。不幸的是,这是在加载套件之后执行的,这意味着我仍然必须在 before 挂钩中加载源代码。为了完整起见,这是我的解决方案。 在实习生配置中:

cfg.setup = function()
{
    return new Promise( function( resolve, reject )
    {
        require( [
                "intern/dojo/node!jsdom"
            ], function(
                jsdom
            )
        {
            var body = "";
            var scripts = [];

            jsdom.env( body, scripts, function( err, window )
            {
                global.document = window.document;
                resolve();
            } );
        } );
    } );
};

我的测试套件:

define( [
        "intern!bdd",
        "intern/chai!expect",

    ], function(
        bdd,
        expect,
    )
{
"use strict";

bdd.describe( "Renderer", function()
{
    var RendererClass;

    bdd.beforeEach( function()
    {
        return new Promise( function( resolve )
        {
            require( [ "src/Renderer" ], function( Renderer )
            {
                RendererClass = Renderer;
                resolve();
            } );
         } );
    } );

    it( ...  var subject = new Renderer(); ...
    it( ...
} );