gpt4 book ai didi

javascript - Underscore/Coffeescript 生成一些奇怪的代码,如何重构代码覆盖率?

转载 作者:行者123 更新时间:2023-11-28 19:53:34 25 4
gpt4 key购买 nike

在我的 Mocha 测试中,我有以下 CoffeeScript :

_u = require "underscore"

...

player._id.toString() in _u.map team._players, (player) ->
player._id.toString()

编译后为:

var _u,
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };

...

return _ref = player._id.toString(), __indexOf.call(_u.map(team._players, function(player) {
return player._id.toString();
}), _ref) >= 0;

首先,我根本不理解编译后的代码,它是coffescript + underscore的神器吗?有没有办法重写我的代码来避免它?

但是问题是 [].indexOf 似乎始终为 true,因此 || ... 永远不会触发,我的 Istanbul 尔代码覆盖率报告上出现了一个问题。我也很乐意用 istanbul 的 ignore 语句排除它,但是因为它是生成的,所以我无法定位它。

最佳答案

使用下划线并不重要。

a in b

编译为:

__indexOf.call(b, a) >= 0;

(在 Coffeescript.org Try 屏幕中尝试此操作。)

Coffeescript 定义(这是标准样板):

var __indexOf = [].indexOf || function(item) ...

通常这会给出[].indexOf,即数组的普通in函数。但一些较旧的浏览器没有此数组方法([].indexOfundefined)。该表达式的 function ... 部分通过数组循环完成同样的事情。

如果您不想要这段 Coffeescript 样板,请不要使用“in”。例如使用:

b.indexOf(a)>=0

可能有一种纯粹使用下划线来完成此操作的方法。

关于javascript - Underscore/Coffeescript 生成一些奇怪的代码,如何重构代码覆盖率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23006763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com