Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Resharper/Jasmine/TypeScript引用外部脚本_Resharper_Typescript_Jasmine - Fatal编程技术网

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

使用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

根据,让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('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仍在挣扎。