現在、CoffeeScriptとJsTestDriverを使用してTDDを調べていますが、JsTestDriverによってスローされたReferenceErrorでスタックしています。
いくつかの情報:
- IntelliJJsTestDriverプラグインの使用
- Chromeによるテスト
- 次と同じ方法でJsTestDriverを構成しました:http ://code.google.com/p/js-test-driver/wiki/QUnitAdapter
- CoffeeScriptでテストを書く
- CoffeeScriptはjavascriptにコンパイルされ、テストが実行される前に構成されたディレクトリに配置されます
構成
server: http://Mark-PC:9876/capture
load:
- js/lib/main/*.js
- js/lib/test/sinon.js
- js/lib/test/qunit.js
- js/lib/test/equiv.js
- js/lib/test/QUnitAdapter.js
- js/coffee/main/controllers/*.js
- js/coffee/main/models/*.js
- js/coffee/test/controllers/*.js
コントローラ
class PortfolioController extends Backbone.Controller
constructor: ->
test: (a, b) ->
return a + b
テストコード
module("PortfolioController", {
setup: -> @routeSpy = sinon.spy()
teardown: -> window.location.hash = ""
})
test 'indexRoute', ->
c = new PortfolioController
equals c.test(1, 1), 2, "1 + 1 = 2"
問題
JsTestDriverがエラーをスローします
ReferenceError: PortfolioController is not defined
ReferenceError: PortfolioController is not defined
at Object. (http://mark-pc:9876/test/js/coffee/test/controllers/PortfolioController.test.js:12:5)
at [object Object].test indexRoute (http://mark-pc:9876/test/js/lib/test/QUnitAdapter.js:40:15)
試した:
- jQuery、BackBoneなどの依存関係を削除する
- Qunitアダプターを削除し、jstestdriverassertsで試してみました
- テスト自体の中にクラスを追加し、それが機能しました
エクスポートの問題やプロトタイプの競合のように見えますか?