我第一次尝试学习摩卡测试。我编写了一个简单的测试脚本,如:
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);
})
});
})
});
我得到了以下错误: app._container_.lookup(...):TypeError是未定义的
在第一个场景中,访问函数似乎缺失了,当将初始化代码放在前面的外部时,访问函数就会得到解决。但是我得到了类型错误,我认为它应该查找AS._container_lookup,但它查看的是app命名空间。我使用的是http://builds.emberjs.com/tags/v1.0.0/ember.js调试版本
你的帮助将不胜感激。我还添加了jsbin http://jsbin.com/ILUbuy/2/。
谢谢你,迪伊
更新我解决了添加这个适配器的问题:https://github.com/teddyzeenny/ember-mocha-adapter
发布于 2014-02-03 08:02:29
我将尝试用jsbin来跟踪这篇文章,并给出一个工作示例。当我第一次开始在firefox中测试ember时,我注意到我总是会遇到这样的错误:
"before each" hook ‣
router is undefined
但这种情况不会发生在铬上。我的线索刚刚发现我做错了什么或者错过了什么。基本上,当执行mocah.run()时,mocha没有找到应该运行应用程序的div,所以一个简单的解决方案是:
$(document).ready(function(){
mocha.run();
});
我所犯的另一个错误,我也不知道我为什么会犯这样的错误:
router.getHandler is not a function
结果发现,这是因为我没有在beforeEach钩子中添加beforeEach()。
在这个例子中,我必须测试div是否正在切换(使用jquery,.tollge('slow'))是否单击。问题是测试会成功运行,但是接下来的测试总是失败的,我永远无法理解为什么会发生这种情况。我知道这是由于jquery的原因,因为如果我在不使用幻想效果的情况下直接设置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/.’,但是它在火狐中工作。
https://stackoverflow.com/questions/18984191
复制