使用Resharper / Jasmine / TypeScript引用外部脚本

时间:2014-03-31 20:24:49

标签: resharper typescript jasmine

根据this question,让Resharper的测试运行器识别茉莉花测试脚本中的脚本依赖关系的方法是将它们包含在文档注释中,如下所示:

// 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');
    });
});

这很好,但我正在用TypeScript编写我的茉莉花测试,测试看起来有点像:

///<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');
    });
});

当我包含像///<reference path="~/Scripts/sinon-1.9.0.js"/>这样的引用时,我得到一个TS编译消息:

  

参考不正确。只允许扩展名为.ts的文件。

换句话说,TS不允许我在文档注释引用标记中包含.js文件。

有关解决方法的任何建议吗?

2 个答案:

答案 0 :(得分:6)

看起来这是一个已知问题:

http://youtrack.jetbrains.com/issue/RSRP-389196

他们将要做的是添加对此类内容的支持:

/// <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所在的同一文件夹中。

答案 1 :(得分:0)

///<reference path="~/Scripts/sinon-1.9.0.js"/>

无法在TypeScript文件中执行此操作,因为reference是为.ts.d.ts保留的语言功能。

此外,'~/Scripts/'似乎错了。 Resharper将索引Visual Studio项目中包含的所有 js文件,并为您提供智能,无需任何注释。