我正在尝试第一次学习摩卡测试。我写了一个简单的测试脚本,如:
describe('Analytics Test Suite', function(){
//http://emberjs.com/guides/testing/integration/
before(function() {
AS.rootElement = '#ember-application-container';
AS.setupForTesting();
AS.injectTestHelpers();
AS.reset();
});
describe('visit analytics index page', function(){
visit("/analytics").then(function() {
it('should return -1 when the value is not present', function(){
expect([1,2,3].indexOf(4)).to.be(-1);
expect([1,2,3].indexOf(0)).to.be(-1);
})
});
})
});
但我得到这个js错误:
ReferenceError:未定义访问
但如果我将代码修改为:
describe('Analytics Test Suite', function(){
AS.rootElement = '#ember-application-container';
AS.setupForTesting();
AS.injectTestHelpers();
AS.reset();
describe('visit analytics index page', function(){
visit("/analytics").then(function() {
it('should return -1 when the value is not present', function(){
expect([1,2,3].indexOf(4)).to.be(-1);
expect([1,2,3].indexOf(0)).to.be(-1);
})
});
})
});
我收到这些错误: TypeError:app ._ 容器 _。lookup(...)未定义
在第一个场景中,似乎缺少访问函数,当将初始化代码放在之前时,它会得到解决。但后来我得到了类型错误,我认为它本应该寻找AS ._ 容器 _lookup,但它看着app命名空间。我正在使用ember调试版http://builds.emberjs.com/tags/v1.0.0/ember.js
非常感谢您的帮助。我还添加了jsbin http://jsbin.com/ILUbuy/2/。
谢谢, DEE
更新 我解决了添加此适配器的问题:https://github.com/teddyzeenny/ember-mocha-adapter
答案 0 :(得分:1)
我将尝试用jsbin跟进这篇文章到一个有效的例子。当我第一次开始在firefox中测试ember应用程序时,我注意到我总是会收到此错误:
"before each" hook ‣
router is undefined
但这不会发生在chrome中。我的领导刚刚发现了我做得不对或缺少的东西。基本上mocha没有找到应该在执行mocah.run()时应该运行应用程序的div,所以一个简单的解决方案是:
$(document).ready(function(){
mocha.run();
});
我得到的另一个错误并且没有提示我为什么会这样做:
router.getHandler is not a function
原来这是因为我没有添加App.reset();在我的beforeEach钩子里。
有一个实例我必须测试div是否在点击时切换(使用jquery UI,.tollge('slow'))。问题是测试会成功运行,但随后的测试总会失败,我永远无法理解为什么会这样。我知道这是由于jquery UI的原因,因为如果我直接将可见性设置为div而不使用花哨的效果,那么测试就会运行,所以如果你在内部我们使用setTimeouts有类似的事情发生,测试它做类似这样的事情:
it("some test", function () {
var context = this;
click(toggleButton).then(function () {
Ember.run.later(context, function () {
}, 1000);
wait().then(function () {
expect(DIV TO BE HIDDEN OR VISIBLE);
});
});
});
此链接也非常有用:http://instructure.github.io/blog/2014/01/24/ember-run-loop-and-tdd/
好的,这是一个有效的例子:http://jsbin.com/opuJetOy/1/ 以上链接在chrome中不起作用,似乎chrome不喜欢以下链接: 'https://raw.github.com/ ....',但它适用于Firefox。