如何使用 After(:build) rspec

How to user Affter(:build) rspec

我枚举包括以下内容:

enum dv_type: { only_rental: 0, rental_buy: 1, only_one: 2 }

在我验证枚举后,如果它是 1 和 2,那么 price 将 > 0,并且 ` 将等于 0

fatories/items.rb

price: 25000

dv_type { Item.dv_types.except(:only_one).keys.sample }

现在想用after(:build)按类型设置值,怎么办?

类型 = 0 然后价格 = 0

type = 1 and 2 then price > 0

工厂通常不应包含随机数据。如果您总是 return dv_type 的值之一并使用特征来选择其他值,您的测试套件将更加稳定。

不过,您的要求很容易实现。您可以参考您工厂中的其他列。

dv_type { Item.dv_types.except(:only_one).keys.sample }
price { dv_type.zero? ? 0 : 25000 }