首页 > 解决方案 > 多参数集继承

问题描述

目前有没有办法从多个参数集继承?

我有一个用例,我有一组测试,它们都共享一组默认值,然后这些测试中的一半共享另一组默认值,另一半共享一组不同的默认值。

到目前为止,我的解决方法是:

  define_params :A_default do |p|
    params(:default)[:tm].each { |id, val| p.tm.send("#{id}=", val) }
    params(:A)[:tm].each { |id, val| p.tm.send("#{id}=", val) }
  end

  define_params :B_default do |p|
    params(:default)[:tm].each { |id, val| p.tm.send("#{id}=", val) }
    params(:B)[:tm].each { |id, val| p.tm.send("#{id}=", val) }
  end

然后我的测试使用inherit: :A_defaultinherit: :B_default取决于测试。

我认为理想情况下,如果当前没有一个用于多个父参数集的 api,并通过某种方法指示优先级顺序(即,如果 A 和 B 父级冲突,则继承谁的值)。

编辑:忘了提到也有继承 A 或 B 的测试,因此使用其特定参数定义 A_default 或 B_default 然后继承 default 仍然需要我多次定义一些参数。

标签: origen-sdk

解决方案


不支持多重继承,因此任何答案都将是您现有解决方案的编码变体。

但是,由于我添加它似乎是一个有用的功能,请参阅 - https://github.com/Origen-SDK/origen/pull/357


推荐阅读