beforeEach 不会在模块化 QUnit/Sinon 测试中使用 CoffeeScript 中的 Require.
beforeEach does not run in modular QUnit/Sinon tests with Require.js in CoffeeScript
尝试用require构建QUnit 0.9.0测试.js正如Nathan Davison在这里解释的那样,但另外使用QUnit.module。(咖啡脚本文件在打开测试页之前转换为JS文件)
.HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<link rel="stylesheet" href="css/qunit.css">
<script data-main="unittestsmain" async src="js/require.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</body>
</html>
unittestsmain.coffee(有3个测试模块,为了节省空间而被删除):
requirejs.config
baseUrl: '.'
paths:
"sinon": 'js/sinon-1.17.3'
"QUnit": 'js/qunit'
shim:
"QUnit":
exports: 'QUnit',
init: () ->
QUnit.config.autoload = false
QUnit.config.autostart = false
require ["QUnit", "sinon", "test_sum"],
(QUnit, sinon, test_sum) ->
test_sum.run()
QUnit.load()
QUnit.start()
test_sum.coffee(类似于 QUnit 文档中的示例之一,除了被包装到 dedefine 中):
define ["sum"], (sum) ->
run: () ->
module "Sum class",
beforeEach: ->
console.log "in beforeEach:", (p for p of @)
@adder = sum.Sum()
test "Sum: common cases", (assert) ->
assert.equal sum.sum_of_entries([1, 2, 3]), 6
assert.equal sum.sum_of_entries([]), 0
return
# ...
test "Sum: adder class", (assert) ->
console.log "in test:", (p for p of @)
@adder.add(5)
assert.equal @adder.result(), 0
return
在添加 adder 类的测试之前,我没有任何问题,它在 Firefox 中抱怨:this.adder is undefined
(并指向test "Sum: adder class"
......部分)。在 Chromium 中:"类型错误:无法读取未定义的属性'add'",在同一函数中。
浏览器中的测试页面看起来不错,除了上面提到的失败测试。
控制台.log输出:in test: ["setup", "teardown", "beforeEach"]
(并且在日志中看不到"in beforeEach"。
尝试了一些小的变化,如 => 而不是 ->、.start、.load 顺序,但它没有帮助。 define ["QUnit", "sum"], (QUnit, sum) ->
然后在test_sum中使用QUnit.
也无济于事。
我想,最大的问题是为什么以前每个都不运行?我错过了什么吗?
beforeEach
来自 QUnit 2.x,而在 QUnit 0.9 中它是setup
。
这些事情在阅读 QUnit 2.x 升级指南后变得清晰起来。
相关文章:
- 当使用extern和目标JavaScript时,我如何强制Haxe编译器使用require语句
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- Typescript导入导出的类会发出require(..),从而导致浏览器错误
- 将require('..')与变量一起使用与在webpack中使用字符串相比
- 限制npm依赖模块's require(隔离)的用法
- 如何在不使用require语句的情况下使用webpack加载目录中的所有文件
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- 在javascript中的require中传递变量
- CoffeeScript将对象添加到数组中
- gets.chomp for coffeescript?
- CoffeeScript绑定多个参数
- 尝试将js函数更改为coffeescript时发生Uncaught ReferenceError
- 避免重新评估和动态卸载用“require”调用的对象
- 弹出窗口-jQuery Mobile、Backbone.js和Require.js
- Jquery Validate with Coffeescript
- 在非SPA(单页应用程序)中使用Require.js和Backbone
- Angular2, doe's EventEmitter require zone.run?
- beforeEach 不会在模块化 QUnit/Sinon 测试中使用 CoffeeScript 中的 Require.
- 通过Node.js require和CoffeeScript中的类解决循环依赖
- 我如何让TextMate看到"require"编译时在CoffeeScript中的表达式