目前我正在研究使用 CoffeeScript 和 JsTestDriver 的 TDD,但是我遇到了 JsTestDriver 抛出的 ReferenceError。
一些信息:
- 使用 IntelliJ JsTestDriver 插件
- 通过 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 适配器并尝试使用 jstestdriver 断言
- 在测试本身中添加了一个类,然后它就起作用了
似乎是某种出口问题或原型冲突?