2013-08-23 141 views
5

我对TypeScript很陌生,试图为我的TypeScript代码库设置一些单元测试。问题是我的代码依赖于其他人的工作,所有这些引用都是以硬编码的相对路径的形式完成的,如“...... \ somefile.d.ts”。在进行单元测试时,我想伪造一些依赖项,但不知道如何让TypeScript取代我的Fakes而不是硬编码的参考文件。更好的打字稿文件参考

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

回答

4

退房咕噜-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的开发。

还检查了这个视频教程:http://www.youtube.com/watch?v=0-6vT7xgE4Y&hd=1

+0

Node.js在我们的工作环境中不存在。我想到了手动生成一个包含所有依赖关系的reference.ts文件,并在我所有的源代码中引用这个文件。但仍然有一些共享文件不在我的控制之下,我不能用这种方法来修复它们。 –

3

不必加载不同的文件你考虑使用测试或间谍框架,以换出一个测试实施的实施?

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

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