使用Resharper/Jasmine/TypeScript引用外部脚本
根据,让Resharper的测试运行程序识别jasmine测试脚本中的脚本依赖项的方法是将它们包含在文档注释中,如下所示:使用Resharper/Jasmine/TypeScript引用外部脚本,resharper,typescript,jasmine,Resharper,Typescript,Jasmine,根据,让Resharper的测试运行程序识别jasmine测试脚本中的脚本依赖项的方法是将它们包含在文档注释中,如下所示: // include external files like so: /// <reference path="/path/to/external-file.js" /> // than write your testing suite as usual: describe('a silly suite', function() { it('shoul
// include external files like so:
/// <reference path="/path/to/external-file.js" />
// than write your testing suite as usual:
describe('a silly suite', function() {
it('should test something is happening', function() {
expect(something).toBe('happening');
});
});
//包括如下外部文件:
///
//然后像往常一样编写测试套件:
描述('愚蠢的套件',函数(){
它('应该测试正在发生的事情',函数(){
期望(某事)发生;
});
});
这很好,但我正在用打字脚本编写jasmine测试,测试看起来有点像:
///<reference path="../../../Scripts/typings/jasmine/jasmine.d.ts"/>
///<reference path="../../../Scripts/typings/sinon/sinon.d.ts"/>
///<reference path="../../../Scripts/Payboard/Models.ts"/>
///<reference path="../EventReferences.ts"/>
describe('Payboard.Events', () => {
var server: SinonFakeServer;
beforeEach(() => {
Payboard.Events.setApiKey('apikey');
server = sinon.fakeServer.create();
});
afterEach(() => {
server.restore();
});
describe('#getAbsoluteUrl', () => {
it('should prepend app.payboard.com to the relative url', () => {
var absoluteUrl = Payboard.Events.getAbsoluteUrl('/some/random/url');
expect(absoluteUrl).toEqual('//app.payboard.com/some/random/url');
});
});
///
///
///
///
描述('Payboard.Events',()=>{
var服务器:SinonFakeServer;
在每个之前(()=>{
Payboard.Events.setApiKey(“apikey”);
server=sinon.fakeServer.create();
});
之后(()=>{
server.restore();
});
描述(“#getAbsoluteUrl”,()=>{
它('应该将app.payboard.com前置到相对url',()=>{
var absoluteUrl=Payboard.Events.getAbsoluteUrl('/some/random/url');
expect(绝对url).toEqual('//app.payboard.com/some/random/url');
});
});
当我包括像//
这样的引用时,我会得到一条TS编译消息:
引用不正确。只允许扩展名为.ts的文件
换句话说,TS不允许我在文档注释引用标记中包含.js文件
有什么解决办法的建议吗?///
///<reference path="~/Scripts/sinon-1.9.0.js"/>
您不能在TypeScript文件中执行此操作,因为reference
是为.ts
和.d.ts
保留的语言功能
另外,
“~/Scripts/”
从一开始就似乎是错误的。Resharper将为Visual Studio项目中包含的所有js文件编制索引,并为您提供智能,无需任何注释。这似乎是一个已知问题:
他们需要做的是添加对以下内容的支持:
/// <resharper_reference path="Scripts/jquery-1.8.2.js" />
/// <resharper_reference path="Scripts/MyClassUnderTest.js" />
//
///
Chutzpah已经支持这种格式,所以如果Resharper也采用这种格式,那就太好了:
/// <chutzpah_reference path="Scripts/jquery-1.8.2.js" />
/// <chutzpah_reference path="Scripts/MyClassUnderTest.js" />
//
///
工作项说它将在Resharper 9.0中解决
也可以在将
sinon.js
复制到sinon.d.js
的地方建立一个变通方法,然后将sinon.d.js
放在sinon.d.ts
所在的同一文件夹中。只是为了澄清一点-我不是在寻找Intellisense。我正在设法让Resharper的测试运行者运行我的Jasmine单元t依赖于其他库的EST,如sinon。当我使用Chutzpah运行测试时,我会在PhantonJS加载的页面中指定这些依赖项。但是Resharper直接在PhantomJS中运行脚本,没有中间页面,因此这是指定依赖项的唯一方法(我可以找到)是通过//
文档注释进行的。我知道TS不允许这样做-所以我想知道的是-我如何做到这一点?而resharper
测试运行程序将拾取///
?如果是这样,在您删除/
后它是否仍然有效?那么,resharper的测试运行程序应该在我的测试中拾取//
。插入I我不知道为什么。我在Resharper板上问过同样的问题-如果我听到一个好的答案,我会在这里交叉发布。非常有用。我在尝试用Chutzpah运行Mocha的Typescript代码时遇到了这个问题。现在问题已经解决了。从我所知,R#从未真正修复过这。他们建议的解决方法是一个丑陋的黑客攻击,要求您将相应的.js文件复制到.d.ts文件所在的任何位置。这不仅假设存在相应的.d.ts文件,而且在使用nuget管理您的明确类型定义时也不起作用。-您对此有解决方案吗?看起来像R#1当通过nuget管理d.ts文件时,0仍在挣扎。