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

Ken*_*ith 5 resharper jasmine typescript

根据这个问题,让Resharper的测试运行器识别茉莉花测试脚本中的脚本依赖性的方法是将它们包含在doc注释中,如下所示:

// 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');
    });
});
Run Code Online (Sandbox Code Playgroud)

这很好,但我正在用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');
    });
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Ken*_*ith 6

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

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

他们将要做的是为这样的事情添加支持:

/// <resharper_reference path="Scripts/jquery-1.8.2.js" />
/// <resharper_reference path="Scripts/MyClassUnderTest.js" />
Run Code Online (Sandbox Code Playgroud)

Chutzpah已经支持这种格式,所以如果Resharper选择那些格式会很好:

/// <chutzpah_reference path="Scripts/jquery-1.8.2.js" />
/// <chutzpah_reference path="Scripts/MyClassUnderTest.js" />
Run Code Online (Sandbox Code Playgroud)

工作项目说它将在Resharper 9.0中得到解决.

也可以修改复制sinon.js到的方法sinon.d.js,然后放在sinon.d.js所在的同一文件夹中sinon.d.ts.