我正在使用Jasmine和Chutzpah在PhantomJS的Visual Studio 2013中測試我的TypeScript項目。如果我使用Chutzpah上下文菜單擴展運行測試,它們工作正常,但是當我使用ReSharper測試瀏覽器運行它們時,如果存在任何外部依賴關係,它們將失敗。錯誤消息是ReferenceError: $ is not defined
。使用Chutzpah和ReSharper進行Jasmine測試的ReferenceError
我的項目結構如下:
- Scripts
- MyApp
- Components
- DatePicker.ts
- Tests
- Components
- DatePickerTest.ts
- typings
- jquery
- jquery.d.ts
- jquery-1.10.2.js
Chutzpah.json
Chutzpah.json
看起來像
{
"Framework": "jasmine",
"Compile": {
"Mode": "External",
"Extensions": [ ".ts" ],
"ExtensionsWithNoOutput": [ ".d.ts" ]
},
"References": [
{
"Includes": [
"*/Scripts/jquery-1.10.2.js"
],
"Excludes": [ "*/Scripts/*.d.ts" ]
}
],
"Tests": [
{
"Includes": [ "*/Scripts/Tests/*.ts" ],
"Excludes": [ "*/scripts/Tests/*.d.ts" ]
}
]
}
DatePickerTest.ts
看起來像
/// <reference path="../../myapp/components/datepicker.ts" />
import DatePicker = MyApp.Components.DatePicker;
describe("Datepicker",() => {
var datePicker: DatePicker
beforeEach(() => {
datePicker = new DatePicker();
});
// tests
});
實例化DatePicker
失敗的消息ReferenceError: $ is not defined
因爲該類在構造函數中使用$.extend()
。
我試過通過添加行/// <chutzpah_reference path="../../jaquery-1.10.2.js" />
來嘗試聲明引用jQuery,但是這並沒有什麼區別。另外我的理解是,在Chutzpah.json
中添加引用意味着我不應該這樣做。
如this answer所示,我在瀏覽器中調試了我的測試,確信jQuery沒有被加載到index.html
頁面,所以我做錯了什麼?
好像你需要添加一個jQuery TypeScript聲明文件(「jquery.d.ts」)作爲nuget包到項目中,並在測試文件中引用它 - https://www.jetbrains.com/resharper/幫助/ Unit_Testing_in_TypeScript.html –
我確實在我的項目中有這樣的情況,我只是沒有把它放在我的問題中,因爲我認爲它不相關,但我已經編輯過現在添加它。 –
您是否在DatePickerTest.ts中添加了「jquery.d.ts」引用?順便說一句,您使用的ReSharper版本是什麼 - ReSharper |幫助|關於JB ReSharper Ultimate? –