Jasmine Karma Array.find不是函数
我用茉莉花做测试,用卡玛做我的测试跑者 我有一个简单的查找方法,使用该方法失败并出现错误: TypeError:myns.dataList.find不是函数 这表明它无法理解该函数。在同一个文件中,我还有一个polyfill用于该方法,并且已经安装在节点上 使用Chrome 51.0.2704 这就是我正在尝试的:Jasmine Karma Array.find不是函数,jasmine,karma-runner,Jasmine,Karma Runner,我用茉莉花做测试,用卡玛做我的测试跑者 我有一个简单的查找方法,使用该方法失败并出现错误: TypeError:myns.dataList.find不是函数 这表明它无法理解该函数。在同一个文件中,我还有一个polyfill用于该方法,并且已经安装在节点上 使用Chrome 51.0.2704 这就是我正在尝试的: describe('the description', function() { it('should work', function() { jasmin
describe('the description', function() {
it('should work', function() {
jasmine.getJSONFixtures().fixturesPath = 'base/path/to/json/';
myns.dataList = loadJSONFixtures('dataList.json');
console.log(myns.dataList); /* all ok here, json is loaded */
var theName = myns.dataList.find(function(entry) {
return entry.name === selfName;
});
expect(2 + 2).not.toEqual(4); /* doesn't get here because of TypeError */
});
});
注意:当直接从浏览器运行Jasmine时,这会正常工作可能是回复过迟,但这是可以解决此问题的方法。在测试代码即将调用fin方法之前,请调用以下代码
if (typeof Array.prototype.find !== 'function') {
Array.prototype.find = function(iterator) {
var list = Object(this);
var length = list.length >>> 0;
var thisArg = arguments[1];
var value;
for (var i = 0; i < length; i++) {
value = list[i];
if (iterator.call(thisArg, value, i, list)) {
return value;
}
}
return undefined;
};
}
if(typeof Array.prototype.find!=“函数”){
Array.prototype.find=函数(迭代器){
变量列表=对象(此);
var length=list.length>>>0;
var thisArg=参数[1];
var值;
对于(变量i=0;i
这将检查数组定义中是否没有可用的方法(find),它将添加一个
原贴于此:
因此,您的代码大致如下(根据需要重构):
description('description',function(){
它('should work',function(){
jasmine.getJSONFixtures().fixturesPath='base/path/to/json/';
myns.dataList=loadJSONFixtures('dataList.json');
console.log(myns.dataList);/*这里一切正常,加载了json*/
if(typeof Array.prototype.find!=“函数”){
Array.prototype.find=函数(迭代器){
变量列表=对象(此);
var length=list.length>>>0;
var thisArg=参数[1];
var值;
对于(变量i=0;i
这可能是一个迟交的回复,但这是可以解决此问题的方法。在测试代码即将调用fin方法之前,请调用以下代码
if (typeof Array.prototype.find !== 'function') {
Array.prototype.find = function(iterator) {
var list = Object(this);
var length = list.length >>> 0;
var thisArg = arguments[1];
var value;
for (var i = 0; i < length; i++) {
value = list[i];
if (iterator.call(thisArg, value, i, list)) {
return value;
}
}
return undefined;
};
}
if(typeof Array.prototype.find!=“函数”){
Array.prototype.find=函数(迭代器){
变量列表=对象(此);
var length=list.length>>>0;
var thisArg=参数[1];
var值;
对于(变量i=0;i
这将检查数组定义中是否没有可用的方法(find),它将添加一个
原贴于此:
因此,您的代码大致如下(根据需要重构):
description('description',function(){
它('should work',function(){
jasmine.getJSONFixtures().fixturesPath='base/path/to/json/';
myns.dataList=loadJSONFixtures('dataList.json');
console.log(myns.dataList);/*这里一切正常,加载了json*/
if(typeof Array.prototype.find!=“函数”){
Array.prototype.find=函数(迭代器){
变量列表=对象(此);
var length=list.length>>>0;
var thisArg=参数[1];
var值;
对于(变量i=0;i