问题标签 [fixtures]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
4186 浏览

ruby-on-rails - Rails 中首选的夹具替换插件?

有十几个 Rails 插件的目标是在测试中替换固定装置。以下是我能想到的几个:

  • 夹具更换
  • 工厂女工
  • 工厂和工人
  • 轨道场景
  • 夹具场景
  • 对象爸爸

可能还有其他人。您更喜欢这些插件中的哪一个,为什么?

0 投票
2 回答
879 浏览

ruby-on-rails - 是使用 sql 转储创建测试数据库时加载的固定装置

由于一些非标准的表创建选项,我被迫使用 sql 转储而不是标准的 schema.rb(即我在 environment.rb 中取消了这一行的注释config.active_record.schema_format = :sql)。我注意到,当我使用 sql 转储时,我的装置似乎没有加载到数据库中。一些数据已加载到其中,但我不确定它来自哪里。这是正常的吗?如果这是正常的,谁能告诉我这些其他数据来自哪里?

0 投票
1 回答
6740 浏览

selenium - Selenium Fitnesse Bridge:如何存储和回显变量?

我正在使用Selenium Fitnesse Bridge Fixture在 Fitnesse for Selenium 中编写测试。这很棒,因为它涵盖了 Selenium 的所有功能。但是,我遇到的问题是像在 Selenium IDE 中一样存储变量。

像这样简单的东西应该可以正常工作,但是当我保存测试时,我得到一个错误,未定义的变量。

这没有任何意义。我在回显之前定义了该行。当我运行测试时,我得到:

作者对他的测试做同样的事情。为什么这对我不起作用?

0 投票
3 回答
8937 浏览

selenium - Selenium:如何使用 javascript 从表单字段中清除值?

我正在使用 selenium IDE 和 Selenium-Fitnesse Bridge 夹具,我正在尝试测试当我从表单字段中清除默认值时,我的表单会显示一条错误消息。

因此,当我使用 Selenium IDE 进行录制时,它所做的就相当于告诉 Selenium 什么都不输入。

问题在于我正在使用的 Fitnesse 夹具期望第二个参数不为空。

Selenium 有没有办法“清除值”而不是“不输入任何内容”?

0 投票
1 回答
370 浏览

ruby-on-rails - 在 Rails 装置中,昆汀是谁?

在 act-as-authenticated 和现在的 restful-authentication 中,第一个用户夹具是“Quentin”。

只是好奇有没有人知道这个名字的由来?昆汀·塔伦蒂诺?某人的狗或孩子?

0 投票
2 回答
9162 浏览

ruby-on-rails - Rails 固定装置——你如何设置外键?

我正在阅读本指南中的 Rails 固定装置(谢谢,trevorturk)。看来您在 Yaml 文件中定义了类,它们会自动加载到test数据库中——很酷。

但是如果你想指定这个食谱属于那本食谱(或其他什么)你怎么做呢?

您是否应该在 Yaml 代码中手动cookbook.id指定值?recipe.cookbook_id(只是一个猜测——指南没有显示类似的内容。)或者有更合适的方法吗?

0 投票
5 回答
1433 浏览

ruby-on-rails - 迁移可以应用于 Ruby on Rails 中的固定装置吗?

我发现在 Ruby on Rails 中使用固定装置有点乏味,部分原因是我需要在大多数迁移后手动更正它们。

有没有办法(插件?)我可以在运行迁移时修改我的固定装置?

0 投票
2 回答
1185 浏览

ruby-on-rails - Rails 初始化程序中对夹具数据的依赖

我有一个初始化程序,它设置了在整个应用程序中使用的默认值。该值是一个 ActiveRecord 模型,我本质上是在应用程序的生命周期内缓存它:

记录保证在数据库中:它是其他模型引用的夹具数据。这工作正常,除非在每次测试运行之前清除数据库的测试环境中。(我在边缘轨道上运行,我认为这是最近的行为:我曾经能够手动插入数据并在测试运行之间保留它。)我的regions.yml夹具文件中也有记录,但直到夹具才加载在 rails 初始化程序完成后。

处理这种对夹具数据的依赖的正确方法是什么?还是有更好的方法来构建它?我宁愿不使用 before_filter 因为在每个请求上重新加载它是没有意义的:它不会改变,除非在不同的部署中。

0 投票
12 回答
3329 浏览

ruby - 随机生成测试数据是一种不好的做法吗?

自从我开始使用 rspec 以来,我一直对固定装置的概念有疑问。我主要担心的是:

  1. 我使用测试来揭示令人惊讶的行为。对于我正在测试的示例,我并不总是足够聪明地列举所有可能的边缘情况。使用硬编码的固定装置似乎是有限的,因为它只用我想象的非常具体的情况来测试我的代码。(诚​​然,我的想象力也限制了我测试的案例。)

  2. 我使用测试作为代码文档的一种形式。如果我有硬编码的夹具值,则很难揭示特定测试试图演示的内容。例如:

    使用第一种方法不会让读者知道最贵的物品是什么,只是它的价格是 100。这三种方法都要求读者相信灯具:expensive是列出的最贵的灯具fixtures/items.yml。粗心的程序员可能会通过创建一个Iteminbefore(:all)或将另一个夹具插入到fixtures/items.yml. 如果这是一个大文件,可能需要很长时间才能找出问题所在。

我开始做的一件事是#generate_random为我的所有模型添加一个方法。此方法仅在我运行规范时可用。例如:

(我如何做到这一点的具体细节实际上更简洁一些。我有一个处理所有模型的生成和清理的类,但这段代码对于我的示例来说已经足够清晰了。)所以在上面的示例中,我可以测试为跟随。对虚心的警告:我的代码严重依赖于使用before(:all)

这样,我的测试可以更好地揭示令人惊讶的行为。当我以这种方式生成数据时,我偶尔会偶然发现我的代码没有按预期运行的边缘情况,但如果我只使用固定装置,我就不会发现这种情况。例如,在 的情况下#most_expensive,如果我忘记处理多个项目共享最贵价格的特殊情况,我的测试偶尔会在第一次失败should。看到 AutoSpec 中的非确定性故障会提示我出了点问题。如果我只使用固定装置,发现这样的错误可能需要更长的时间。

我的测试在代码中演示预期的行为方面也做得更好。我的测试清楚地表明 sorted 是按价格降序排序的项目数组。由于我希望#most_expensive等于该数组的第一个元素,因此更明显的是预期的行为most_expensive是什么。

那么,这是一种不好的做法吗?我对固定装置的恐惧是非理性的吗?为每个模型写一个generate_random方法是不是工作量太大了?或者这行得通吗?

0 投票
3 回答
3541 浏览

ruby-on-rails - 夹具和 Selenium 和 Rails(哦,我的?)

你在 Rails 应用程序上的 Selenium 测试中使用了哪些数据?你从固定装置加载吗?使用现有的开发数据库?使用单独的(非夹具)数据库?

我在这里考虑我的选择。我有一个带有大型 Selenium 测试套件的 Rails 应用程序,该套件在 Selenium Grid 的修改版本上运行。现在,该过程的一部分是在测试套件运行之前加载大量的固定装置。这是很多数据。其中大部分是报告从我们的生产数据库导出的信息。当我最初设置它时,我将数据从 Oracle 导出到 yaml。

现在一些报告表中的模式发生了变化,所以我当然必须重新生成夹具数据。它太多了,不值得手动编辑文件。但是对于每个小的模式更改都必须重新生成似乎效率低下 - 更不用说这是另一个需要记住的步骤。有没有更好的办法?

编辑:我最初打算在每次测试之前加载固定装置并在每次测试之后卸载它们,就像常规的 Rails 测试一样。但由于此报告数据,加载灯具大约需要 15 分钟。有 200 多个测试,套件每 12 小时运行一次。我不能弯曲时空队长!

编辑2:我也同意拥有这么多固定装置是一种难闻的气味。不过,我不确定如何减少它,因为报告汇总了大量数据,而硒测试的大部分价值在于它们测试了报告。

即使它是一小组数据,但是……它仍然是另一个与架构更改保持协调的数据集。(我们为单元、功能和 [Rails] 集成测试提供了一个单独的、较小的集合。)

这让我回到了我最初的问题——除了手工操作或记住每次都重新生成它们之外,还有其他选择吗?