1

我们有一个调用 wraps 传单的模板应用程序,样式函数需要将函数作为方法参数,模板不能这样做,所以我们传递一个对象,然后将其解析为一个函数,无论如何这可行,但试图用 Jest 测试这个给我们带来了问题。

代码

public onStylesChange(newVal) {
        this.geoJSONstyles = Function('return ('+newVal+')')(); //      
        if (this.geoJSON) {
            this.geoJSON.setStyle(this.geoJSONstyles);
        }
    }
}

测试

it('Should accept a function parameter', () => {
    cut.onObjChange({test:'object'});
    // expect the cut.geoJSONStyles property to be of type Function.
    expect(typeof cut.geoJSONstyles).toBe('Function');
})

返回

SyntaxError: Unexpected identifier
    at Function (<anonymous>)

我该如何解决这个问题?

4

1 回答 1

1

不知道去年我的头在哪里,但是休息一下就理清了思路。

我需要做的,这是在评论中向我指出的,所以谢谢你,是检查类型,我也可以将函数作为字符串返回并检查。(忽略函数的作用,它只是为了测试分配)所以

it('Should accept a string function and eval to a function', () => {
    const testString = 'function () {return 0 }'  
    cut.onObjChangetest(String);
    expect(typeof cut.onEachFeature === 'function').toBeTruthy();
    expect(cut.geoJSONstyles.toString()).toBe(testString);
})

完美运行,测试通过,哇哦!谢谢

于 2019-01-08T15:39:16.367 回答