测试jQyery.get with mocha.js不起作用,其他Deferred (RSVP)也不起作用
Testing jQyery.get with mocha.js does not work, nor do other Deferred (RSVP)
我正在尝试使用mocha.js运行一些JavaScript测试。到目前为止,一切都运行得很好,但我有一个大问题,测试任何围绕jQuery请求或其他承诺/延迟。
我的代码在浏览器中工作得非常好,以前大量使用$.Deferred
,但使用Mocha我无法让它运行。
我尝试了不同的方法来编写它,并且还切换到一个"合适的"Promise库,因为显然已知jQuery会给它的实现带来麻烦。
正确的回复。承诺工作很好,RSVP.Defer
仍然不是,我不能得到任何工作涉及jQuery(如请求)。
我确实发现了一些建议,将jQuery包装到适当的Promises中应该可以完成这项工作,但我找不到任何实际做到这一点的方法。
下面是一个测试用例来显示这个问题:
'use strict';
var RSVP = require('rsvp');
var $ = require('jquery');
describe('promises', function() {
it('works with RSVP.Promise', function(done) {
new RSVP.Promise(function(resolve, reject) {
resolve();
}).then(function() {
done();
});
});
it('works with RSVP.Deferred promise', function(done) {
RSVP.defer().done(function() {
done();
}).resolve();
});
it('works with $.Deferred', function(done) {
$.Deferred().done(function() {
done();
}).resolve();
});
it('works with $.get (promise syntax)', function(done) {
$.get('http://google.com', function() {
done();
});
});
it('works with $.get (defered syntax)', function(done) {
$.get('http://google.com').done(function() {
done();
});
});
});
运行: $ mocha --compilers jsx:babel/register
给出如下输出:
promises
✓ works with RSVP.Promise
1) works with RSVP.Deferred promise
2) works with $.Deferred
3) works with $.get (promise syntax)
4) works with $.get (defered syntax)
1 passing (59ms)
4 failing
1) promises works with RSVP.Deferred promise:
TypeError: undefined is not a function
at Context.<anonymous> (test/test.js:17:26)
2) promises works with $.Deferred:
TypeError: undefined is not a function
at Context.<anonymous> (test/test.js:23:21)
3) promises works with $.get (promise syntax):
TypeError: undefined is not a function
at Context.<anonymous> (test/test.js:31:7)
4) promises works with $.get (defered syntax):
TypeError: undefined is not a function
at Context.<anonymous> (test/test.js:37:7)
只要不涉及jQuery Promise/Defer,其他测试运行得很好。
是否有一个更好的解决方案,而不是放弃jQuery的请求或我做一些普遍错误的?测试的目的是测试实际的请求/响应,因此模拟请求也不是这里的选项。
就像我说的代码在浏览器中运行得很好,无论使用承诺/延迟jQuery与否。所以我猜这是一个问题与测试运行程序或node.js环境(?)它运行在。
测试HTTP请求可以使用:https://github.com/visionmedia/supertest
非常好,或者您可以使用https://github.com/visionmedia/superagent
代替使用jQuery来发出HTTP请求。我认为这是一个更标准的方式在nodeJS比使用jQuery
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 我的javascript for循环不起作用
- Meteor-添加用户自定义字段的方法不起作用
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- Textarea必需的attribut在javascript中不起作用
- 为什么javascript:void(0)在Firefox中不起作用
- 测试jQyery.get with mocha.js不起作用,其他Deferred (RSVP)也不起作用