为什么Jasmine没有在这个异步测试中执行它()?
Why is Jasmine not executing it() on this async test?
我正在尝试测试一个原型方法,该方法返回关于我通过AJAX加载的数据集的见解。
$.getJSON('../data/bryce.json').done(function(data) {
insights = new Insights(data);
describe("People Method", function() {
console.log('it executes this far');
it("should return complete people data", function() {
console.log('but not this far');
expect(insights.people()).toBeTruthy();
});
});
});
当我运行这个测试套件时,执行的是describe(),而不是it()。一般来说,我对JavaScript测试很陌生,所以我想我做错了什么。但我不确定是什么。
另外,因为我正在处理的数据是一个巨大的 JSON文件,所以不可能将其包含在此文件中。也不可能提供一个样本大小的版本。数据集中的每个对象都有数百行长。
Jasmine使用排队机制,执行所有的describe
和it
函数,排队等待执行的工作。
在Jasmine中异步工作需要遵循一定的模式。
茉莉花1. x
describe('some suite', function(){
it('some test', function(){
var data;
//Execute some async operation
runs(function(){
$.get('myurl').done(function(d){ data = d; });
});
//Wait for it to finish
waitsFor(function(){
return typeof data !== 'undefined';
});
//Assert once finished
runs(function(){
expect(data.foo).toBe('bar');
});
});
});
茉莉花1。x使用一种特殊的轮询机制来保持对waitsFor
方法的轮询,直到超时或返回true,然后执行最后的runs
方法。
茉莉花2. x
describe('some suite', function(){
var data;
beforeEach(function(done){
$.get('myurl').done(function(d){
data = d;
//Signal test to start
done();
});
});
it('some test', function(done){
expect(data.foo).toBe('bar');
//Signal test is finished
done();
});
});
茉莉花2。X有点不同,因为它使用一种信号机制来指示何时开始和结束测试。你的规范可以采用一个可选的done
方法来同步你的测试。
如果您在beforeEach
中使用done
方法,那么它将不会开始您的测试,直到该方法被调用。
如果在it
函数中使用done
方法,则在调用该方法之前测试将不会完成。
这两种方法都可以用来有效地管理测试中的异步行为。
相关文章:
- 如何对CSS transitionEnd事件后执行的JavaScript进行单元测试
- 如何通过 phantomjs 可靠地执行利用 requirejs 的 Jasmine 测试
- 量角器端到端测试中的异步执行
- 如何防止模块的运行块在测试期间被执行
- 在Eclipse中执行Protractor测试
- 作为自动化测试的一部分,监控特定的js事件以及执行它们所需的时间
- 角度测试:监视在控制器初始化时执行的函数
- 是否可以使用gulpjasmine phantom对纯js类执行e2e测试
- Object.defineProperty()在测试(jpm运行)过程中有效,但不起作用;使用实际xpi时,不要执行任何
- CasperJS测试获胜't执行后返回
- 测试规范在$rootScope之前执行$apply()已完成对promise的解析
- "未定义“角度”;在Liferay中存储的角度应用程序上执行Protractor测试时出错
- 我们可以使用Jasmine在测试中执行异步操作吗
- 如何在多个文件中设置摩卡测试用例的执行顺序
- 如何对延迟函数执行单元测试
- 如何在 mocha 中使用嵌套测试执行使测试依赖
- 量角器-html-屏幕截图-报告器未显示报告器文件中执行的所有测试
- 渲染流星模板时执行的茉莉花测试方法
- Jasmine - 等待异步库完全加载,然后再执行测试
- 为了执行A/B测试,分割用户的好javascript方法