【问题标题】:Typescript nested forEach as decorator打字稿嵌套 forEach 作为装饰器
【发布时间】:2021-04-03 07:33:54
【问题描述】:

我们有相当复杂的 api,应该嵌套多个参数。 现在测试看起来像回调地狱

[true, false, null].forEach(customer => {
   [true, false, null].forEach(sale => {
    it('test', ()=> {
       // Do something with customer and sale
     })
  })
})

测试最多可以有 10 个参数,并且都应该检查。

我正在考虑改用打字稿。所以我想知道是否有可能将测试重写为类似

let customer: []
@param(customer, [true, false, null])
it('test', ()=>{})

因此功能保持不变。 有什么办法吗?

【问题讨论】:

    标签: typescript jestjs typescript-decorator


    【解决方案1】:

    装饰器仅适用于类。 it 是常规函数,不能与装饰器一起使用。 it 在这种情况下不能取消嵌套,因为它应该接收特定于此测试的 customer 值,并且这是在嵌套函数范围内完成的。

    这不是回调地狱通常的意思。 forEach 回调的嵌套级别由循环嵌套严格确定,不会使控制流复杂化。如果这是一个问题,可以用任何其他循环结构重写循环:

    for (const customer of [true, false, null]) {
      ...
    }
    

    Jest API 有each,允许以更简洁的方式循环提供数据。

    【讨论】:

    • 谢谢。 Jest 每个都接受元组,它不涵盖 2 个变量的所有可能变体。同样在 26.6 上它有一个错误。这就是我决定使用 forEach 或 for of 循环的原因。
    猜你喜欢
    • 2018-06-21
    • 2019-07-29
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2020-01-31
    • 2018-02-12
    • 2020-12-24
    相关资源
    最近更新 更多