rspec:第一次失败后如何继续测试

2024-02-03

我正在使用 rspec 来系统测试设备。该设备是模块化的,因此可以将任意数量的子设备连接到测试装置。我想在很多地方编写测试,这些测试将循环连接的子设备并在每个设备上运行相同的测试。

基本上,这就是我想要做的:

before(:all)   
  @tool = discover_sub_devices()
  @tool.sub_devices.should == exp_sub_device_list
end

describe "some sub device tests" do
  @tool.sub_devices.each do |dev|   
    it "should succeed at doing things" do
      dev.do_thing.should == success   
    end 
  end
end

不幸的是这不起作用。我收到错误消息说 @tool 为空并且不包含类sub_devices在测试运行之前。所以测试是在之前解析的before(:all)块运行。

我可以让它工作的一种方法是将循环放在it堵塞。像这样:

it "should succeed at doing things" do
  @tool.sub_devices.each do |dev| 
    dev.do_thing.should == success   
  end
end

这样做的问题是我真的想测试所有子设备,即使第一个子设备失败了。我想查看一份报告,详细说明有多少子设备出现故障。一旦其中一个失败,此代码就会崩溃,并且不会测试其余部分。

我意识到这可能不是 rspec 的正常用例,但如果我能让这项工作正常进行,对于我们的测试情况将非常方便。

有什么建议么?


以下是一些编写此内容的技巧。

最好避免使用before :all。最好避免在示例之外创建对象。

describe "some sub device tests" do

  let(:tool) { discover_sub_devices }

  it "matches the sub device list" do
    tool.sub_devices.should be == expected_sub_devices_list
  end

  it "succeeds with all sub-devices" do
    failures = tool.sub_devices.reject{|d| d.do_thing == success}

    # option 1
    failures.should be_empty # will show just a yes/no result

    # option 2
    failures.size.should be == 0 # will show the number of failures

    # option 3
    failures.should be == [] # will display all sub-devices which fail
  end

end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rspec:第一次失败后如何继续测试 的相关文章

随机推荐

  • Excel公式:如何按大写字母拆分字符串

    使用公式而不是VBA 我想提出一个解决方案来分割由多个单词组成的字符串 该公式应该识别有大写字母的单词并将它们分开 结果将是一个字符串 其中单词之间用 分隔 为了澄清这一点 我们举一个字符串的例子 Nursing StudentStuden
  • 如何限制画布中的拖放区域

    我有一个画布 假设尺寸为 500x600 我在该画布内有一些控件 用户可以通过拖放重新排列控件 但我想限制该画布内的拖放 例如 画布中有一个按钮 用户可以将该按钮拖放到画布内的任何位置 但是 如果用户尝试将按钮拖出画布边界 则它应该停留在画
  • 仅最后一个值在数组中重复

    我正在尝试在 javascript 中用逗号分隔附加一些值 我有这个查询 select boxes dispatch id projects project boxes hardware sum boxnumber as boxnumber
  • JAX-RS 是构建在 Servlet API 之上的吗?如何?

    我一直在读到 JAX RS 是构建在 servlet 之上的 这是字面意思吗 还是仅仅意味着它是一个更高级别的组件 如果是的话 它是如何运作的 JAX RS 是否创建一个解析请求并手动初始化的 servlet Path带注释的类并将修改后的
  • 从包中导出所有隐藏函数

    有没有一种方法可以自动从包中导入所有隐藏函数 即只能通过以下方式访问的函数package fun 事实上 我对给定函数进行了一些修改 该函数使用了相当多的内部函数 我想避免重新输入package 到处 我在看loadNamespace基本函
  • 使用 LibGDX 的法线贴图 GLSL

    我尝试使用 LibGDX 实现法线贴图 因此 当我在顶点着色器中计算漫反射和镜面反射颜色时 我得到了一些积极的结果 至少我这么认为 顶点着色器 attribute vec4 a position attribute vec2 a texCo
  • CONNECTIVITY_CHANGE 在 Android N 的目标中已弃用 [重复]

    这个问题在这里已经有答案了 我收到关于广播接收器已弃用声明的警告
  • 无法使用 PostgreSQL 配置 AspNet.Identity

    我有一个使用 SQL Server 设置的 Web 项目 现在必须将其迁移到 PostgreSQL 我使用实体框架版本 6 0 和最新版本的 Microsoft AspNet Identity 来管理用户凭据 我正在使用 VS2015 和
  • 如何调用使用 NSClassFromString 动态创建的类中的方法?

    我进行动态类加载的原因是因为我正在创建一组可在多个类似项目中使用的文件 因此执行 import 然后正常实例化是行不通的 动态类允许我执行此操作 只要我可以调用这些类中的方法即可 每个项目在 pch 中都有一个不同的 kMediaClass
  • 为什么应用程序池会自动停止? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在使用 IIS 7 0 对我的 MVC 互联网应用程序进行性能测试 有时应用程序池会停止 并且我在浏览器中收到一条错
  • 如何验证 KeyUsage 证书

    我正在尝试验证证书以确保它具有正确的 keyUsage 但不明白如何将我的 X509KeyUsageFlags KeyEncypherment 使用标志指定到此应用程序策略中 这是我到目前为止的代码 还有其他人让这个工作吗 X509Cert
  • 有没有像 Firefox 一样可以保存网站的 Python 脚本?

    当我想保存一些网站时 我厌倦了在 Firefox 中单击 文件 然后单击 页面另存为 Python 有没有脚本可以做到这一点 我想保存图片和css文件 这样当我离线阅读时 它看起来很正常 你可以使用 wget wget m k E 网址 E
  • 如何在 Delphi TStringList 中更快地搜索名称/值对?

    我通过将运行时的所有字符串放入 TStringList 中 在应用程序中实现了语言翻译 procedure PopulateStringList begin EnglishStringList Append CAN T FIND FILE
  • HTTP 失败:java.net.SocketException:套接字关闭改造

    尝试了多种方法仍然面临这个问题 我正在使用 RxJava 和 Retrofit 来完成所有网络操作 下面是我的代码 服务 kt GET v1 contact id fun getContactDetails Path id id Strin
  • upnpx 库的 Apple Mach-O 链接器错误

    我在使用 upnpx 库时遇到一个小问题 我已经下载了该库并打开了 upnpdemo 工作区 我在同一工作区中创建了一个新项目 尝试使用该库创建一个简单的应用程序 我像演示项目一样设置参数 但是 XCode 返回 21 个错误 Apple
  • WPF:列表框取消选择

    当用户单击我的单选中的某个项目时ListBox 该项目被选中 当用户第二次单击某个项目时 除非按住 Ctrl 键 否则不会取消选择该项目 建议将 2 更改为不需要控制键的方法是什么 确保选择模式为Multiple 通过选择多个 您只需单击鼠
  • 使用 _FILES 无法将文件发送到 PHP 服务器

    我正在尝试将值发送到 PHP 服务器 但总是收到 HTTP REsponse 200 并且在我的服务器中我没有收到我发送的值 不知道问题是什么 以下是我的 android 和 PHP 代码片段 有人可以帮忙吗我用这个 抱歉代码太多 我也遵循
  • 如何在Asp.Net Mvc4中检查验证码后传递Email Id值?

    我是使用实体框架的 Asp Net Mvc4 的新手 现在我正在为忘记密码进行验证码验证 作为我的代码 当我单击提交按钮时 即使验证码无效 它也会将电子邮件 ID 值传递给控制器 如果验证码正确 我想将电子邮件 ID 值传递给控制器 否则它
  • ASP.NET 无法编译调试

    我有两台 IIS 服务器计算机 A 和 B 它们都为相同的 ASP NET Web 窗体站点提供服务 在 A 上 当我遇到错误时 我会收到详细的错误页面 其中显示生成异常的源代码 在 B 上 当我遇到错误时 我收到消息 The source
  • rspec:第一次失败后如何继续测试

    我正在使用 rspec 来系统测试设备 该设备是模块化的 因此可以将任意数量的子设备连接到测试装置 我想在很多地方编写测试 这些测试将循环连接的子设备并在每个设备上运行相同的测试 基本上 这就是我想要做的 before all tool d