2014-03-31 15 views
5

this question,得到ReSharper的測試運行器能夠識別你茉莉測試腳本腳本依賴的方式就是將它們納入一個文檔註釋,像這樣:引用與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'); 
    }); 
}); 

這是偉大的,但我在寫我的打字稿茉莉測試,以測試看起來有點像這樣:

///<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不讓我在doc註釋引用標籤中包含.js文件。

解決方法的任何建議?

+0

- 你有沒有得到這個決心?看起來R#10仍然在通過nuget管理d.ts文件時遇到困難。 – BMac

回答

6

看起來,如果這是一個已知的問題:

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

什麼他們將要做的是增加對這樣的事情:

/// <resharper_reference path="Scripts/jquery-1.8.2.js" /> 
/// <resharper_reference path="Scripts/MyClassUnderTest.js" /> 

放肆已經支持這種格式,所以它會很好,如果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所在的同一文件夾中。

+0

非常有用。我遇到了這個問題,嘗試使用Chutzpah爲摩卡的Typescript代碼運行。現在解決了。 – Aebsubis

+0

從我所知道的情況來看,R#從來沒有真正解決過這個問題。他們建議的解決方法是一個醜陋的黑客,需要您將相應的.js文件複製到.d.ts文件所在的位置。這不僅假設*有*相應的.d.ts文件,而且在使用nuget管理DefinitelyTyped定義時也不起作用。 –

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

不能在打字稿文件reference做到這一點是.ts.d.ts預留的語言功能。

另外'~/Scripts/'似乎是錯誤的從開始。 Resharper將索引所有包含在Visual Studio項目中的js文件,併爲您提供智能,無需評論。

+1

只是要清楚 - 我不是在尋找Intellisense。我想弄清楚如何讓Resharper的測試運行器運行我的Jasmine單元測試,這些測試依賴於其他庫,如sinon。當我使用Chutzpah運行我的測試時,我在由PhantonJS加載的頁面中指定這些依賴關係。但是Resharper直接在PhantomJS中運行腳本,沒有中間頁面,所以指定依賴關係(我可以找到)的唯一方法是通過'/// 'doc註釋。我知道TS不會允許這個 - 所以我想知道的是 - 我該如何實現? –

+0

'resharper'測試跑步者拿起'/// '?如果是這樣,你刪除'///參考路徑=「sinon.js」/>'後仍然工作? – basarat

+0

好吧,Resharper的測試跑步者*應該*拿起'/// <參考路徑=「sinon.js」/>'。在我的測試中 - 手動插入到生成的JavaScript - 它似乎不是。不知道爲什麼。我在Resharper板上提出了同樣的問題 - 如果我聽到一個很好的答案,我會在這裏交叉發佈。 –