Bra*_*ice 3 unit-testing ruby-on-rails traits rspec2 factory-bot
听巨型机器人粉碎到其他巨型机器人播客,我听说你希望你的FactoryGirl工厂最小化,只提供那些使对象在数据库中有效的属性.话虽这么说,谈话还继续说,特征是一种非常好的方法,可以根据可能在未来发生变化的属性来定义特定行为.
我想知道是否有一个好主意是定义了故意无法通过验证来清理规范代码的特征.这是一个例子:
factory :winner do
user_extension "7036"
contest_rank 1
contest
trait :paid do
paid true
end
trait :unpaid do
paid false
end
trait :missing_user_extension do
user_extension nil
end
trait :empty_user_extension do
user_extension ""
end
end
Run Code Online (Sandbox Code Playgroud)
将允许我build_stubbed(:winner, :missing_user_extension)在测试中调用我的规范我打算验证失败.我想我可以通过将这些坏工厂嵌套在另一家工厂下来进一步明确失败:invalid_winner,但我不太确定是否有必要.我最感兴趣的是听取别人对这个概念的看法.
不,这不是一个好主意,它不会让你的规格在一段时间后清楚地理解,之后当你的代码发展时,那些今天失败的工厂可能不再失败,你将很难审查所有的规范.
为一个明确标识的东西编写测试更好.如果要检查保存是否因缺少必需参数而失败,只需使用常规工厂写入并添加参数以覆盖工厂中的值:
it 'should fail' do
create :winner, user_extension: nil
...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |