首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何告诉database_cleaner不要在一组特定的rspec测试中间运行

在RSpec测试中,可以通过配置文件或代码告诉database_cleaner不要在一组特定的测试中间运行。下面是一种常见的方法:

  1. 首先,在RSpec的配置文件(通常是spec_helper.rbrails_helper.rb)中,添加以下代码:
代码语言:txt
复制
RSpec.configure do |config|
  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end
end

上述代码将在每个测试运行之前启动数据库清理器(DatabaseCleaner),并在每个测试运行之后进行数据库清理。

  1. 然后,在需要跳过数据库清理的测试组中,可以使用RSpec的元数据(metadata)来标记这些测试。例如,假设我们有一个名为"skip_cleaner"的元数据标记:
代码语言:txt
复制
RSpec.describe "MyApp", skip_cleaner: true do
  # 这组测试将跳过数据库清理
end
  1. 最后,在RSpec的配置文件中,修改config.before(:each)config.after(:each)的代码块,以检查测试是否被标记为跳过数据库清理:
代码语言:txt
复制
RSpec.configure do |config|
  # ...

  config.before(:each) do |example|
    unless example.metadata[:skip_cleaner]
      DatabaseCleaner.start
    end
  end

  config.after(:each) do |example|
    unless example.metadata[:skip_cleaner]
      DatabaseCleaner.clean
    end
  end
end

通过上述修改,只有未被标记为跳过数据库清理的测试才会运行数据库清理器。

这样,你就可以告诉database_cleaner不要在一组特定的RSpec测试中间运行。请注意,上述代码示例中的DatabaseCleaner.strategyDatabaseCleaner.clean_with的配置是示意性的,你可以根据实际情况选择适合的策略和清理方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Effective Testing with RSpec 3 (第一部分:入门)

在本章中,你将看到: •如何安装RSpec并编写你第一个specs •如何使用describe,和用它来组织你specs •如何验证期望结果 •如何解释测试失败 •如何使你specs不受重复设置代码影响...我们在这里有一个特定有效定义:这个测试是否支付了编写和运行成本?...三明治最重要特性是什么? 面包? 条件? ,关于三明治最重要是它应该味道好。 让我们用RSpec语言这么说吧。...这些术语是半可互换,但每个都有不同侧重点: •测试验证了一些代码是否正常工作。 •规范描述了一些代码期望行为。 •一个示例显示了如何使用特定API。...再看一下我们在这个片段中使用三种RSpec方法: •RSpec.describe创建一个示例组(一组相关测试)。 •它创建了一个示例(单个测试)。 •期望验证预期结果(断言)。

2K30

Effective Testing with RSpec 3(介绍)

我们测试再次被打破!”“为什么套件需要这么长时间才能运行?”“无论如何,我们从这些测试中获得了什么价值?” 多年过去了,技术发生了变化,但关于自动测试抱怨是一样。...如何使用本书 通过本书,您将分三个阶段学习RSpec 3: •第一部分:介绍练习,让您熟悉RSpec •第二部分:跨越几个章节工作示例,以便您可以在一个有意义大小项目中看到RSpec •第III-V...部分:RSpec特定方面的一系列深入研究,将帮助您充分利用RSpec 我们把这本书写成封面阅读封面。...最后,如果您每天使用RSpec 3,请将本书深入部分放在附近。 在特定情况下你会发现它们很方便 - 我们这样做,而且我们多年来一直在使用RSpec!...当我们有针对特定受众内容时 - 例如来自旧版RSpec的人或不熟悉Web开发的人 - 我们会将这些内容放在侧边栏中。

2K20
  • 用 GitLab 做 CICD 是什么感觉,太强了!!

    Git仓库中托管应用程序代码库中,并且每次推送时,都要运行一系列脚本来构建、测试和验证代码更改,然后再将其合并到主分支中。...对于每次向仓库推送,你都可以创建一组脚本来自动构建和测试应用程序,从而减少了向应用程序引入错误机会。...GitLab CI/CD 是如何工作 为了使用GitLab CI/CD,你需要一个托管在GitLab上应用程序代码库,并且在根目录中.gitlab-ci.yml文件中指定构建、测试和部署脚本。...在这个文件中,你可以定义要运行脚本,定义包含依赖项,选择要按顺序运行命令和要并行运行命令,定义要在何处部署应用程序,以及指定是否 要自动运行脚本或手动触发脚本。...部署应用 到目前为止,你应该看到管道正在运行,但是它到底在运行什么呢? 管道内部分为4个阶段,我们可以查看每个阶段有几个作业在运行,如下图: 构建 -> 测试 -> 部署 -> 性能测试 ?

    9.6K43

    实现一个简单Database4(译文)

    SQLite数据库实现,通过这个简单项目,可以很好理解数据库是如何运行。...本文是第四篇,主要是使用rspec对目前实现功能进行测试并解决测试出现BUG Part 4 我们第一个测试(和BUG) 我们已经获得插入数据到数据库并打印所有数据能力。...现在来测试一下目前已有的功能。 我使用rspec来写我测试,因为我对rspec很熟悉,它语法也相当易读。...", "db > ", ]) end end 这个简单测试是确认我们输入能够获取返回结果。并确保能通过测试: bundle exec rspec ....所以我们需要在拷贝string到Row结构前检查每一个string长度。为了检查string长度,我们需要用空格分割输入。

    1.5K20

    GitLabCI系列之流水线语法第四部分

    cache 缓存 用来指定需要在job之间缓存文件或目录。只能使用该项目工作空间内路径。不要使用缓存在阶段之间传递工件,因为缓存主要是存储编译项目所需运行时依赖项。...如何让不同job缓存不同cache呢?设置不同cache:key。 ---- cache:key 缓存标记 为缓存做个标记,可以配置job、分支为key来实现分支、作业特定缓存。...在这里定义了全局cache,如果文件发生变化则值为 rspec-xxx111111111222222 ,未发生变化为rspec-default。...: script: - bundle exec rspec 例如,添加$CI_JOB_NAME prefix将使密钥看起来像:rspec-feef9576d21ee9b6a32e30c5c79d0a0ceb68d1e5...将生成一个新缓存密钥,并为该密钥创建一个新缓存. 如果Gemfile.lock未发生变化 ,则将前缀添加default ,因此示例中键为rspec-default 。

    2.2K10

    使用 YAML 文件配置 Jenkins 流水线

    * Jenkins 版本过低,已经很难升级 * Wolox 过去几年增长显著,一直面临着如何伸缩问题 * 只有极少数人如何修复 Jenkins 服务问题 * 配置 Jenkins 任务不是一件简单任务...,使我们项目启动过程变慢 * 更改每个作业运行命令也不是一件简单任务,并且有权限更改的人并不多。...共享库有一个好处是我们可以集中扩展和修改我们共享库代码。一旦添加新代码,Jenkins 就会自动更新它,还会通知所有的任务。 由于我们有不同语言项目,我们使用 Docker 来构建测试环境。...你只需要在该目录下(https://github.com/Wolox/wolox-ci/tree/development/vars)添加,然后告诉共享库该服务是如何被转换,如https://github.com...Steps 部分中描述步骤执行过程中,Docker 容器会提供你设置好所有环境变量。 ### 总结 目前,WoloxCI 还在我们所有项目中一小部分项目进行测试

    4.8K40

    Step by Step!Kubernetes持续部署指南

    最后,我们做到了,虽然远未达到规定一周时间——我们花了将近一个月时间来创建三个集群,包括它们开发、测试和生产。 本文我将详细介绍如何将应用程序部署到Kubernetes。...在Semaphore,block按照顺序运行,与此同时,在block中job也会并行运行。流水线包含2个block,一个是用于库安装,一个用于运行测试。 ?...请注意我们重复使用了checkout和cache代码以将初始文件放入job中。最后一个命令用于启动RSpec测试套件。...构建Docker镜像 我们可以在Kubernetes上运行任何东西,只要它打包在Docker镜像中。在这一部分,我们将学习如何构建镜像。...然而,如果你想要在计算机上进行一个快速测试,那么请输入: $ docker build .

    83720

    React 测试驱动教程

    经过几个小时博客文章阅读,查阅 JS 开发者源码,还有参加 Florida JSConf,终于让我找到了自己测试“槽”。开始让我觉得没有经过测试 React 程序代码是如此标准和凌乱。...应用非常广泛,允许使用 RSpec 一样语法。 Sinon:将服务于 mocks/stubs/spies. Enzyme:将用于测试我们 React components。...AirBnB 写一个很漂亮测试库。 安装这些包: npm i mocha chai sinon --save-dev 如果我们希望能够使用 ES6 编写测试,那么我们需要在运行前对代码进行转译。...很多时候给定一个特定 props 后,我发现自己包装部分测试会在 “sub” describe 块中,然后给一堆断言也有这些 props。...结论 我们已经建立了一个坚实测试环境,可以根据你项目具体需求去改变和发展。在下一次文章中,我将花更多时间在特殊场景测试,还有如何测试 Redux,我更喜欢 flux 实现。

    4.6K20

    架构演进, 阿里资深Java工程师表述架构腐化之谜

    所有人都很高兴——因为用了新技术,因为这个架构是如此简单、清晰、有效。 阶段2 好日子不算太长。 很快你老板(或者客户,随便什么)有一揽子想法要在这个团队实现。工作有条展开。...通过合理拆分、分层,每次运行特定步骤,例如只运行特定测试、只构建必要部分;然后提交,让持续集成服务器运行所有的步骤。这样开发者能够继续进行后续工作。...除了常见CI服务器本身提供能力,许多团队也发明了自己分布式技术,他们往往能够将代码分布到多台机器进行编译和运行测试。...JRebel能够将需要编译Java语言变成修改、保存立即生效,减少了大量修改、保存、重新编译、部署时间;Spork能够启动一个Server,将RSpec测试相关代码缓存于其中,这样在运行RSpec...无论项目如何组织,开发者都需要打开所有的项目才能完成编译和运行过程。

    70950

    持续集成gitlab-ci.yml配置文档基础

    答:gitlab-ci全称是gitlab continuous integration意思就是持续集成;gitlab-ci.yaml是Gitlab-CI做持续集成和发布执配置文件,里面定义了如何测试...其实相当于一次构建任务,里面可以包含很多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程。...受保护分行安全:管道在受保护分支上执行时,将执行严格安全模型,只有在允许用户合并或推送 特定分支时,才允许在受保护分支上执行以下操作 : 运行手动管道(使用Web UI或Pipelines API...标记为受保护Runners只能保护分支机构运行作业,避免不受信任代码要在保护runner和保存部署键被意外地触发或其他凭证执行。...为了确保打算在受保护跑步者上执行工作不会使用常规runner,必须对其进行相应标记。 Q:如何计算管道持续时间? 管道运行时间将排除重试和待处理(排队)时间。

    14.9K30

    持续集成gitlab-ci.yml配置文档基础

    答:gitlab-ci全称是gitlab continuous integration意思就是持续集成;gitlab-ci.yaml是Gitlab-CI做持续集成和发布执配置文件,里面定义了如何测试...其实相当于一次构建任务,里面可以包含很多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程。...受保护分行安全:管道在受保护分支上执行时,将执行严格安全模型,只有在允许用户合并或推送 特定分支时,才允许在受保护分支上执行以下操作 : 运行手动管道(使用Web UI或Pipelines API...标记为受保护Runners只能保护分支机构运行作业,避免不受信任代码要在保护runner和保存部署键被意外地触发或其他凭证执行。...为了确保打算在受保护跑步者上执行工作不会使用常规runner,必须对其进行相应标记。 Q:如何计算管道持续时间? 管道运行时间将排除重试和待处理(排队)时间。

    11.9K20

    logstash input插件开发

    logstash作为一个数据管道中间件,支持对各种类型数据采集与转换,并将数据发送到各种类型存储库,比如实现消费kafka数据并且写入到Elasticsearch, 日志文件同步到对象存储S3等,mysql...本文以开发logstashcos input插件为例,介绍如何开发logstashinput插件。...::Inputs::Base基类 cos_spec.rb: 单元测试文件,通过rspec可以对cos.rb中代码进行测试 logstash-input-cos.gemspec: 类似于maven中pom.xml...在spec/inputs/cos_spec.rb中增加如下测试代码: # encoding: utf-8 require "logstash/devutils/rspec/spec_helper" require...是一个ruby测试库,通过bundle命令执行rspec: bundle exec rspec 如果cos.rb中代码没有语法或运行时错误,则会出现如果信息表明测试成功: Finished in 0.8022

    4.1K61

    持续测试基础设施

    持续测试基础设施必要性 基础设施作为应用程序支柱,为之提供关键运行环境、网络连接和资源调度等支持。...因此,持续测试不仅是持续交付高质量软件必要保障,对于基础设施而言,其价值和影响更为深远。 本文来分享一下我们团队是如何对基础设施进行测试测试范围 首先我们要识别出需要测什么。...如果已经写了很多测试,就只能在 Aurora 这里使用其它方式验证,最后导致各处验证方式统一。...我选择则是 Ruby/RSpec,因为 Ruby 简洁自然语法和 RSpec 强大验证器,让测试代码中很少出现语言自身导致难懂和多余代码。...如何测 组件测试加上人工验证是交付环境能够成功部署主要信心来源,而在有逻辑分支时候,单元测试可以用来成为对组件测试补充:组件测试验证代码主干,单元测试在部署前来验证分支,以实现对代码测试全覆盖

    22420

    架构演进,阿里资深Java工程师表述架构腐化之谜

    所有人都很高兴——因为用了新技术,因为这个架构是如此简单、清晰、有效。 阶段2 好日子不算太长。 很快你老板(或者客户,随便什么)有一揽子想法要在这个团队实现。工作有条展开。...通过合理拆分、分层,每次运行特定步骤,例如只运行特定测试、只构建必要部分;然后提交,让持续集成服务器运行所有的步骤。这样开发者能够继续进行后续工作。...除了常见CI服务器本身提供能力,许多团队也发明了自己分布式技术,他们往往能够将代码分布到多台机器进行编译和运行测试。...JRebel能够将需要编译Java语言变成修改、保存立即生效,减少了大量修改、保存、重新编译、部署时间;Spork能够启动一个Server,将RSpec测试相关代码缓存于其中,这样在运行RSpec...无论项目如何组织,开发者都需要打开所有的项目才能完成编译和运行过程。

    1.1K100
    领券