gpt4 book ai didi

ruby-on-rails - 是否值得尝试尽可能多地重用测试夹具?

转载 作者:行者123 更新时间:2023-11-28 21:29:47 25 4
gpt4 key购买 nike

我必须在现有项目中使用 Rails fixtures。切换到 FactoryGirl 等不是一个选项。

在我的固定装置中,我通常有一些通用一次(在生产数据库中最常出现的记录)加上相当一部分用于测试边缘情况的固定装置。对于博客应用程序,后者可能是没有帖子的博客、有一段时间没有活跃的博客,或者没有关注者的博客。

与尝试尽可能多地重用现有夹具相比,您对为每个极端情况创建一组单独的夹具记录有何看法?后者可能包括对特定方法的模拟/ stub 调用(例如 Account.any_instance.expects(:post_limit).returns(1000)Mocha),甚至创建与应用程序逻辑(例如,当您的应用程序只允许每个帐户有一个用户时,每个帐户有多个用户)。

最佳答案

我避免为不常见的用例创建数据装置。但是,如果我有几个场景在应用的多个部分进行检查,那么我会在固定装置中创建它们,因为我认为它是应用测试语言的一部分。

对于边缘情况,我在测试中创建数据。通过修改已知的夹具记录,或通过创建满足边缘案例标准的新记录。您不需要像 Factory Girl 这样的工具来创建可重用的工厂。 (每个 ActiveRecord 模型都是一个工厂。)您可以在模块中创建一些命名良好的方法,然后将其包含在您的测试类中。

我不会像您概述的那样 mock 您的模型。我会在测试中创建记录,然后测试应用程序是否正确运行。

def test_lots_of_posts
account = new_account_with_n_posts 100
assert(account.posts > 5)
end

def new_account_with_n_posts count
account = Account.create! name: "Temp Account"
count.times do |n|
account.posts.create! title: "Temp Post #{n}"
end
account
end

关于ruby-on-rails - 是否值得尝试尽可能多地重用测试夹具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26910976/

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