在使用TypeScript,RequireJs和Jasmine时,无法确定将require.config置于何处

时间:2015-06-19 09:17:07

标签: requirejs typescript jasmine

我一直在遵循Steve Fenton在此描述的设置TypeScript,RequireJS和Jasmine的模式:

https://www.stevefenton.co.uk/Content/Blog/Date/201407/Blog/Combining-TypeScript-Jasmine-And-AMD-With-RequireJS/

这种模式确实运作良好且真正解锁了我(耶!),但我现在正处于需要为RequireJS定制一些设置的地步,但我似乎无法弄清楚在哪里我的require.config电话。我尝试过的每个地方都会造成休息和退步。以下是两种似乎最合乎逻辑/最有希望的方法

在SpecRunner.cshtml中

<script data-main="/Scripts/TypeScript/RequireJsConfig" src="/Scripts/require.js"></script>

在RequireJsConfig.ts

require.config({
    baseUrl: "../Scripts",
    paths: {
        jquery: "../jquery-2.1.3"
    }
});

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Attempt 1: When I try it this way I immediately get this error
//
//     JavaScript runtime error: Object doesn't support property or method 'config'
//
import TestLoader = require("Tests/TestLoader");
TestLoader.Run();

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Attempt 2: When I try it this way, everything builds and runs without errors, but 
// Jasmine doesn't find any of the tests.  All I get is "No specs found" even 
// though I see the breakpoints on my "it" statements getting hit.
//
require(["Tests/TestLoader"], (testLoader) => {
    testLoader.Run();
});

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

jasmine.getEnv().execute();

在TestLoader.ts中

import GuidHelperTests = require("Tests/T3/Helpers/GuidHelperTests");
import ObjectHelperTests = require("Tests/T3/Helpers/ObjectHelperTests");

class TestLoader {

    public static Run: () => void = () => {
        GuidHelperTests.Run();
        ObjectHelperTests.Run();
    }    
}

export var Run = () => TestLoader.Run();

在GuidHelperTests.ts

import T3 = require("T3/T3Lib");

export var Run = () => {

    describe("GuidHelper tests", () => {
        it("GUID validator validates good GUID", () => {

        // etc. ... 

我的猜测是,尝试2不起作用,因为某些排序问题,其中测试发现过程在模块加载之前发生,或类似的事情。我在RequireJS中不够精通,不知道我的选择在哪里。

1 个答案:

答案 0 :(得分:0)

我更喜欢让我的配置远离我的应用程序 - 你可以预先注册这样的配置,并且它会在加载时被RequireJS选中。无需将其添加到您的第一个文件中。

<script>
var require = {
    baseUrl: "../Scripts",
    paths: {
        jquery: "../jquery-2.1.3"
    }
};
</script>
<script data-main="/Scripts/TypeScript/RequireJsConfig" src="/Scripts/require.js"></script>