打字稿的文件参考更好

时间:2013-08-23 20:45:32

标签: typescript

我是TypeScript的新手,并尝试为我的TypeScript代码库设置一些单元测试。问题是我的代码依赖于其他人的工作,所有这些引用都是以硬编码的相对路径的形式完成的,比如“...... \ somefile.d.ts”。当进行单元测试时,我想伪造一些依赖,但不知道如何使TypeScript采用我的Fakes而不是硬编码的引用文件。

我的问题是:有没有办法不在源代码中硬编码参考路径?在TypeScript中是否存在预处理器或宏,或者我可以使用项目系统来帮助解决依赖关系,而不是在源代码中对它们进行硬编码?

2 个答案:

答案 0 :(得分:4)

查看grunt-ts参考文件生成:https://github.com/basarat/grunt-ts#reference-file-generation

你可以做的是有单独的目标,一个用于开发,一个用于测试:

    dev: {                          
        src: ["app/**/*.ts", "!app/**/*.spec.ts"], // Exclude your spec files 
        reference: "./app/reference.ts", 
        out: 'app/out.js',        
    },
    test: {                          
        src: ["app/**/*.ts"], // Include all files 
        reference: "./app/reference.ts", 
        out: 'app/out.js',        
    },

现在您只从所有文件中引用app/reference.ts。当你想要为dev发布/ dev build时,你想运行测试,构建测试。

另请参阅此视频教程:http://www.youtube.com/watch?v=0-6vT7xgE4Y&hd=1

答案 1 :(得分:3)

您是否考虑使用测试或间谍框架来替换测试实现的实现,而不是加载不同的文件?

在我们的TypeScript项目中,我们使用jasmine spies(https://github.com/pivotal/jasmine/wiki/Spieshttp://tobyho.com/2011/12/15/jasmine-spy-cheatsheet/)来伪造依赖关系。我们正常加载主要源代码,然后使用createSpyObj和spyOn函数用我们测试文件中定义的新TypeScript替换依赖项。

使用这种方法,您无需对主要源代码进行任何修改或包含路径 - 所有操作都在测试文件中完成。