我一直在遵循Steve Fenton在此描述的设置TypeScript,RequireJS和Jasmine的模式:
这种模式确实运作良好且真正解锁了我(耶!),但我现在正处于需要为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中不够精通,不知道我的选择在哪里。
答案 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>