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

为什么在rspec测试中有创建并存储在数据库中的项,但应用程序看不到它已存储

在rspec测试中,创建并存储在数据库中的项在应用程序中看不到的原因可能是由于测试环境和开发环境之间的隔离性所导致的。

在rspec测试中,通常会使用一个独立的数据库来运行测试,这个数据库与开发环境中使用的数据库是分离的。当你在测试中创建并存储一个项时,它实际上是存储在测试数据库中,而不是开发环境中的数据库。

这种隔离性是为了确保测试的独立性和可重复性。测试数据库的目的是为了提供一个干净的环境,以便每次运行测试时都能从一个空白状态开始。这样可以避免测试之间的相互影响,同时也可以确保测试结果的可靠性。

因此,即使你在测试中创建并存储了一个项,应用程序在运行时是无法看到它的,因为它存储在测试数据库中,而应用程序实际上是连接到开发环境中的数据库。

如果你希望应用程序能够看到测试中创建并存储的项,你可以考虑以下几种方法:

  1. 使用测试数据库的数据同步功能:某些测试框架提供了将测试数据库的数据同步到开发环境数据库的功能。通过配置测试框架,你可以将测试数据库中的数据同步到开发环境中,这样应用程序就能够看到测试中创建的项了。
  2. 手动复制数据:你可以手动将测试数据库中的数据复制到开发环境中的数据库。这可以通过导出测试数据库的数据,然后导入到开发环境中的数据库来实现。

需要注意的是,将测试数据同步到开发环境中可能会引入一些风险,因为测试数据可能包含一些不符合开发环境要求的数据。因此,在进行数据同步之前,建议先进行数据清理和验证,以确保数据的一致性和正确性。

总结起来,rspec测试中创建并存储在数据库中的项在应用程序中看不到是由于测试环境和开发环境的隔离性所导致的。如果你需要应用程序能够看到测试中创建的项,可以考虑使用测试数据库的数据同步功能或手动复制数据到开发环境中的数据库。

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

相关·内容

Effective Testing with RSpec 3(介绍)

我们的测试再次被打破!”“为什么套件需要这么长时间才能运行?”“无论如何,我们从这些测试中获得了什么价值?” 多年过去了,技术发生了变化,但关于自动测试的抱怨是一样的。...RSpec的每个方面都旨在解决开发人员在野外遇到的一些问题。 有了它,您可以放心地构建Ruby应用程序。...您可以放心地进行更改,您的测试套件会在您破坏某些内容时通知您。 不过,TDD这个词有点用词不当。尽管名称中有“test”这个词,但TDD不仅仅是关于你的测试。这是关于他们为您的设计实现无畏改进的方式。...作为一个测试框架,RSpec非常适合BDD工作流程。 RSpec帮助您“正确理解”并准确指出您在测试中的意思。...虽然您将在几个章节中构建Web服务,但我们并不认为您已经是Web开发人员。 很多人使用RSpec来测试命令行应用程序,GUI应用程序等。 我们将在讨论过程中解释一些Web开发概念。

2K20

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

欢迎来到RSpec! 在本书的这一部分中,你将在编写前几个工作测试时熟悉该框架。 首先,你将安装RSpec并编写你的前几个specs - RSpec的测试术语。...一项好的测试将至少提供以下一项好处: •设计指导:帮助你将所有这些奇妙的想法提炼成可运行,可维护的代码 •安全网:在客户开始之前在代码中发现错误 •文档:捕获工作系统的行为以帮助其维护人员 当你按照本书中的示例进行操作时...既然RSpec在您的系统上,我们快速检查以确保它已准备就绪: $ rspec --version RSpec 3.6 - rspec-core 3.6.0 - rspec-expectations...组,示例和期望 此文件定义了您的测试,在RSpec中称为您的规范,是规范的缩写(因为它们指定了代码的所需行为)。 外部RSpec.describe块创建一个示例组。...在示例中,您遵循Arrange / Act / Assert模式:设置一个对象,用它做一些事情,并检查它是否按照您想要的方式运行.2在这里,您创建一个三明治,询问它的味道,并验证 结果很美味。

2K30
  • Step by Step!Kubernetes持续部署指南

    该项目已包含部署所需的所有内容,但仍需要一些组件。 准备工作 在开始操作之前,你需要登录Github和Semaphore账号。...首先要做的是fork存储库。 ? Fork存储库 在这篇文章中fork我们将使用的演示应用程序。...使用Semaphore测试 持续集成让测试变得有趣并且高效。一个完善的CI 流水线能够创建一个快速反馈回路以在造成任何损失之前发现错误。我们的项目附带一些现成的测试。...打开位于.semaphore/semaphore.yml的初始流水线文件,并快速查看。这个流水线描述了Semaphore构建和测试应用程序所应遵循的所有步骤。它从版本和名称开始。...请注意我们重复使用了checkout和cache的代码以将初始文件放入job中。最后一个命令用于启动RSpec测试套件。

    85020

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

    它涉及到在每次小的迭代中就不断地构建、测试和部署代码更改,从而减少了基于已经存在bug或失败的先前版本开发新代码的机会。...Continuous Integration(持续集成) 假设一个应用程序,其代码存储在GitLab的Git仓库中。开发人员每天都要多次推送代码更改。...这种做法称为持续集成,对于提交给应用程序(甚至是开发分支)的每项更改,它都会自动连续进行构建和测试,以确保所引入的更改通过你为应用程序建立的所有测试,准则和代码合规性标准。...应用程序不仅会在推送到代码库的每次代码更改时进行构建和测试,而且,尽管部署是手动触发的,但作为一个附加步骤,它也可以连续部署。...在这个文件中,你可以定义要运行的脚本,定义包含的依赖项,选择要按顺序运行的命令和要并行运行的命令,定义要在何处部署应用程序,以及指定是否 要自动运行脚本或手动触发脚本。

    10K43

    GitLab CI CD管道配置参考 .gitlab-ci.yml文件定义字段

    该配置是及时的快照,并保留在数据库中。 .gitlab-ci.yml 在创建下一个管道之前,对引用配置的任何更改都不会反映在GitLab中。...请注意,在上面的示例中: variables部分已合并,但URL: "http://my-url.internal" 已被覆盖URL: "http://docker-url.internal"。...changes 根据更改的文件在管道中添加或排除作业。与相同only:changes。 exists 根据特定文件的存在在管道中添加或排除作业。 顺序评估规则,直到找到匹配项。...如果Dockerfile已更改,则将该作业作为手动作业添加到管道中,并允许管道继续运行,即使未触发该作业(allow_failure: true)。...README.md存储库的根目录中的文件已更改。

    22.3K20

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

    要仅在作业失败时上传工件: job: artifacts: when: on_failure ---- artifacts:expire_in 制品的有效期,从上传和存储到GitLab的时间开始算起...在GitLab的UI中显示这些报告。注意:无论作业结果(成功或失败),都将收集测试报告。...artifacts:reports:junit 收集junit单元测试报告,收集的JUnit报告将作为工件上传到GitLab,并将自动显示在合并请求中。...工具导出到多个XML文件,则可以在一个作业中指定多个测试报告路径,它们将被自动串联到一个文件中....定义一个空数组将跳过下载该作业的任何工件不会考虑先前作业的状态,因此,如果它失败或是未运行的手动作业,则不会发生错误。 如果设置为依赖项的作业的工件已过期或删除,那么依赖项作业将失败。 ?

    3.4K20

    前沿观察 | Redis Streams原生数据结构科普

    点击上方蓝字每天学习数据库 Redis 5.0中以引入的新Redis数据结构“Streams”引起了社区的极大兴趣。 不久之后,我想进行社区调查,与有生产用例的用户交谈,并撰写博客。...如果我为了切换到另一组字段删除它,又会使格式变得不太灵活。 3. 项偏移只是文件中的字节偏移量:如果我们更改文件结构,则偏移量将是错误的,因此这里没有实际的主要ID概念。...当您进一步对应用程序数据建模时,要使用Redis作为它的主要工具,你会立即意识到需要一种方法来跟踪在给定网球俱乐部中玩的游戏。...匹配的唯一标识符:stream中的ID。 2. 无需创建对象即可识别匹配项。 3. 范围查询免费分页匹配项,或检查在过去某个给定时刻所进行的匹配项。...如果我可以在大约18 MB的内存中存储100万个条目,我可以在180 MB中存储1000万个,在1.8 GB中存储1亿个。只有18 GB的内存,我可以拥有10亿个项目。

    63710

    持续测试基础设施

    部署前 单元测试 在 Terraform 中,通常需要人工来验证 terraform plan 的结果,但是它只能覆盖当前 state 和配置参数下的结果。...比如服务可以被成功访问、数据库确实被创建出来并配有正确的参数,密钥管理器中被保存下来的数据库密钥我们可以成功连接到数据库等等。...与应用测试一样,任何一条失败的测试都应让我们的 Pipeline 变红,向团队告警。并确保只有在前一个环境被验证通过后,我们才向下一个环境前进。 一个测试的范例 我们以 Ruby/RSpec 为例。...db_spec.rb: 用来验证在 DB 中进行的设置,比如支持动态数据库凭证所在 DB 中创建的资源,DB 的 extension 被正确启用。...vault_spec.rb:用来验证 Vault 中创建的资源、比如 master 凭证的存储、支持动态数据库凭证所需的资源。

    23320

    配置管理

    首先,它要保留每个文件的所有版本的历史信息,并使之易于查找。其次,它让分布式团队(无论是空间上不在一起,还是不同的时区)可以愉快地协作。 为什么要这样做呢?...你也许需要将这种虚拟环境中的配置信息作为某特定版本的应用软件在虚拟环境中的标准配置信息。 我们要把应用程序的配置信息当做代码一样看待,恰当地管理它,并对它进行测试。...要与系统运维和支持团队一同讨论,看看他们有什么样的需求。 将应用程序的配置项与源代码保存在同一个存储库中,但要把配置项的值保存在别处。...应该总是通过自动化的过程将配置项从保存配置信息的存储库中取出并设置好,这样就能很容易地掌握不同环境中的配置信息了。...避免对配置信息的过分设计,应尽可能简单。 确保测试已覆盖到部署或安装时的配置操作。检查应用程序所依赖的其他服务是否有效,使用冒烟测试来诊断依赖于配置项的相关功能是否都能正常工作。

    62210

    运维必备的DevOps工具链大盘点

    Jasmine Jasmine 是一个开源的 JavaScript 测试框架。它的目标是可以在任何支持 JavaScript 的平台上运行,不干扰应用程序或 IDE,并具有易于阅读的语法。...它深受其他单元测试框架的影响,比如 Screw.Unit、JSSpec、JSpec 和 RSpec。 Cucumber Cucumber 是一个支持行为驱动开发的工具。...简而言之,AWS 可以做以下这些事情: 在云端运行 Web 和应用服务器,托管动态网站; 将所有文件安全地存储在云端,这样你就可以从任何地方访问它们; 使用托管数据库,如 MySQL、PostgreSQL...它提供一系列云服务,包括计算、分析、存储和网络。用户可以选择这些服务来开发和扩展新的应用程序,或者在公共云中运行现有的应用程序。...Prometheus Prometheus 是一款用于事件监控和警报的免费应用程序。它在时间序列数据库中记录实时指标,基于 HTTP 拉取模型,支持灵活的查询和实时警报。

    1.4K20

    最全的DevOps工具集合,再也不怕选型了!

    5测试工具 测试阶段主要是检测内部质量,建立对已部署构件的信心。目前业内常用的测试工具包括 JUnit、xUnit.net、Selenium、Jasmine 和 Cucumber。 ?...在它身上可以找到 Screw.Unit、JSSpec、JSpec 和 RSpec 等诸多单元测试框架的影子。 Cucumber Cucumber 是一种支持行为驱动开发的软件工具。...简单来说,AWS 允许你进行以下操作: 在云中运行 Web 和应用程序服务器以托管动态网站 将所有文件安全地存储在云中,可以从任何地方访问它们 使用托管数据库(如 MySQL、PostgreSQL、Oracle...Google Cloud Platform 提供了计算资源,用于在 Web 上部署和运营应用程序。它的专长是为个人和企业提供构建和运行软件的场所,并使用 Web 来连接软件用户。...Prometheus Prometheus 是用于事件监视和警报的免费软件应用程序。它将实时指标记录在一个时间序列数据库中,该数据库使用 HTTP 拉取模型构建,支持灵活查询和实时警报。

    2.6K11

    让开发者更轻松地使用Postgres添加AI应用

    [它自动化]了从源数据创建嵌入的过程,并允许团队基本上设置好之后就不用管了。...它取代了这些用于更新和同步的排队系统。” 同步 ——“当你构建 AI 应用程序时,你必须编写代码来检查,‘好的,在我的向量数据库中,这些嵌入已创建。’[但是]我的关系数据库中是否有正确的元数据?...——Timescale 博文 “pgai 通过将嵌入存储在 pgvector 数据类型中,并使用 Python 和 PL/Python 在 PostgreSQL 数据库中与模型 API 交互来补充 pgvector...它可以在现有关系数据上执行分类、摘要和数据增强任务。它直接在数据库中创建嵌入,跳过了将它们保存到数据库的任务。...Sewrathan 在The New Stack 的一篇文章中还提到了它的基准测试,将它的 pgvector 版本与 Pinecone 进行了比较,得出的结论是,Postgres 扩展不仅成本低得多,而且比独立的向量数据库更快

    9810

    必备的DevOps工具链大盘点

    Jasmine Jasmine 是一个开源的 JavaScript 测试框架。它的目标是可以在任何支持 JavaScript 的平台上运行,不干扰应用程序或 IDE,并具有易于阅读的语法。...它深受其他单元测试框架的影响,比如 Screw.Unit、JSSpec、JSpec 和 RSpec。 Cucumber Cucumber 是一个支持行为驱动开发的工具。...简而言之,AWS 可以做以下这些事情: 在云端运行 Web 和应用服务器,托管动态网站; 将所有文件安全地存储在云端,这样你就可以从任何地方访问它们; 使用托管数据库,如 MySQL、PostgreSQL...它提供一系列云服务,包括计算、分析、存储和网络。用户可以选择这些服务来开发和扩展新的应用程序,或者在公共云中运行现有的应用程序。...Prometheus Prometheus 是一款用于事件监控和警报的免费应用程序。它在时间序列数据库中记录实时指标,基于 HTTP 拉取模型,支持灵活的查询和实时警报。

    1.9K30

    自动化测试入门:是什么,流程,收益和工具

    示例:Quality center是测试管理工具,它将依次调用QTP来执行自动化脚本。脚本可以在一台机器或一组机器中执行。可以在夜间执行,以节省时间。...他们之中有一些是 创建统一的脚本,注释和代码缩进 适当的异常处理-系统故障或应用程序异常行为时如何处理错误。 用户定义的消息应进行编码或标准化,以供测试人员理解错误记录。...选择正确的工具可能是一项艰巨的任务。...将测试存储为Ruby脚本,HTML和其他任何格式 它提供了一个断言每个页面标题的选项 它支持Selenium user-extensions.js文件 它允许在脚本中间插入注释,以更好地理解和调试 QTP...为了简化测试的创建和维护,它使用关键字驱动测试的概念。它允许测试人员直接从应用程序构建测试用例。

    1.6K10

    干掉 Jenkins?顶级 DevOps 工具链大盘点

    Jasmine Jasmine 是一个开源的 JavaScript 测试框架。它的目标是可以在任何支持 JavaScript 的平台上运行,不干扰应用程序或 IDE,并具有易于阅读的语法。...它深受其他单元测试框架的影响,比如 Screw.Unit、JSSpec、JSpec 和 RSpec。 Cucumber Cucumber 是一个支持行为驱动开发的工具。...简而言之,AWS 可以做以下这些事情: 在云端运行 Web 和应用服务器,托管动态网站; 将所有文件安全地存储在云端,这样你就可以从任何地方访问它们; 使用托管数据库,如 MySQL、PostgreSQL...它提供一系列云服务,包括计算、分析、存储和网络。用户可以选择这些服务来开发和扩展新的应用程序,或者在公共云中运行现有的应用程序。...Prometheus Prometheus 是一款用于事件监控和警报的免费应用程序。它在时间序列数据库中记录实时指标,基于 HTTP 拉取模型,支持灵活的查询和实时警报。

    1.1K20

    必备的DevOps工具链大盘点

    它的目标是可以在任何支持 JavaScript 的平台上运行,不干扰应用程序或 IDE,并具有易于阅读的语法。...它深受其他单元测试框架的影响,比如 Screw.Unit、JSSpec、JSpec 和 RSpec。 Cucumber Cucumber 是一个支持行为驱动开发的工具。...简而言之,AWS 可以做以下这些事情: 在云端运行 Web 和应用服务器,托管动态网站; 将所有文件安全地存储在云端,这样你就可以从任何地方访问它们; 使用托管数据库,如 MySQL、PostgreSQL...微软 Azure 是微软创建的云计算服务,通过微软数据中心构建、测试、部署和管理应用程序和服务。...Prometheus Prometheus 是一款用于事件监控和警报的免费应用程序。它在时间序列数据库中记录实时指标,基于 HTTP 拉取模型,支持灵活的查询和实时警报。

    2.4K30

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

    暂时限制了作业在needs:可能需要的最大作业数分配,ci_dag_limit_needs功能标志已启用(默认)分配10个,如果功能被禁用为50。...local 引入同一存储库中的文件,使用相对于根目录的完整路径进行引用,与配置文件在同一分支上使用。 ci/localci.yml: 定义一个作业用于发布。...远程文件必须可以通过简单的GET请求公开访问,因为不支持远程URL中的身份验证架构。...[微服务架构] 父子管道: 在同一项目中管道可以触发一组同时运行的子管道,子管道仍然按照阶段顺序执行其每个作业,但是可以自由地继续执行各个阶段,而不必等待父管道中无关的作业完成。...strategy: depend将自身状态从触发的管道合并到源作业。 ? 在下游项目中查看管道信息 ? 在此示例中,一旦创建了下游管道,该staging将被标记为成功。

    3K30

    本周Slack服务中断的经验总结

    美国东部时间下午7:42,该公司发布消息称,它已“恢复了所有受影响的Slack功能的全部功能,例如发送消息、工作流程、线程和其他与API相关的功能。” 但恢复正常服务的工作仍在继续。...周四,它发布了一则更新,时间戳为美国东部时间上午10:17,提醒用户在停机期间创建的事件“已排队并当前暂停。我们预计这需要一些时间,并将每小时更新进度。...我们知道的是:Slack应用程序于2013年首次推出,从一开始,根据2020年12月发布的一篇文章在Slack工程博客上,它使用MySQL作为其数据的存储引擎。...所以他对推广自己的产品以及与 Slack 不同的数据存储方式(在一个为水平扩展而设计的单个分布式数据库中,内置数据冗余)有着既得利益。...“但问题是,好的,无论刚刚发生了什么,让我们定期测试一下。当我们拥有运行手册并应用它们时,我们可以将我们的 RTO 优化到什么程度?”

    6300

    如何在Ubuntu上部署Elixir-Phoenix MySQL应用程序

    输出显示Mix检查了包之间的兼容性,并从Hex存储库中获取了包及其依赖项。如果此命令失败,请确保已安装Hex并正确修改了mix.exs。 使用Ecto和Mariaex,您可以设置Ecto存储库。...第二步 - 在应用程序中设置Ecto存储库 Phoenix应用程序通过名为Ecto的数据库包装器访问数据库。数据库包装器以项目中的Elixir模块的形式实现。...此外,它必须包含用于初始化在名为init的函数中传递给数据库适配器的选项的代码。 让我们在lib/myproject目录中名为repo.ex的文件中创建模块。...第六步 - 创建地址簿 为了演示如何部署数据库更改,让我们在我们的应用程序中构建一个简单的通讯录并将其部署到生产环境中。 警告:此通讯录可以公开访问,任何人都可以访问和编辑它。...它还指示我们将资源添加到路由器文件并更新存储库。 您可以按照在输出中看到的说明进行操作,但通过这样做,您将在单个版本中捆绑应用程序代码升级和数据库迁移。

    6.1K20
    领券