gpt4 book ai didi

javascript - 引用错误 : CoffeeScript + JsTestDriver + Qunit

转载 作者:行者123 更新时间:2023-11-30 13:32:28 25 4
gpt4 key购买 nike

目前我正在研究使用 CoffeeScript 和 JsTestDriver 的 TDD,但是我被 JsTestDriver 抛出的 ReferenceError 困住了。

一些信息:

配置

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

Controller

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 断言
  • 在测试本身中添加了一个类,然后它起作用了

似乎是某种导出问题或原型(prototype)冲突?

最佳答案

听起来您需要使 PortfolioController 成为全局的,也许可以通过添加

root = window ? global
root.PortfolioController = PortfolioController

文件末尾,或者简单地替换

class PortfolioController extends Backbone.Controller

class @PortfolioController extends Backbone.Controller

利用 this 是该上下文中的全局根这一事实。

CoffeeScript 永远不会自动导出超出文件范围的任何内容;你必须明确地做到这一点。请参阅我对此行为的解释 here .

关于javascript - 引用错误 : CoffeeScript + JsTestDriver + Qunit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com