Jasmine Karma Array.find不是函数

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

我用茉莉花做测试,用卡玛做我的测试跑者

我有一个简单的查找方法,使用该方法失败并出现错误:

TypeError:myns.dataList.find不是函数

这表明它无法理解该函数。在同一个文件中,我还有一个polyfill用于该方法,并且已经安装在节点上

使用Chrome 51.0.2704

这就是我正在尝试的:

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