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

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

欢迎来到RSpec! 在本书的这一部分中,你将在编写前几个工作测试时熟悉该框架。 首先,你将安装RSpec并编写你的前几个specs - RSpec的测试术语。...在本章中,你将看到: •如何安装RSpec并编写你的第一个specs •如何使用describe,和用它来组织你的specs •如何验证期望的结果 •如何解释测试失败 •如何使你的specs不受重复设置代码的影响...要安装所有RSpec,只需安装rspec gem: $ gem install rspec -v 3.6.0 Successfully installed rspec-support-3.6.0...这些术语是半可互换的,但每个都有不同的侧重点: •测试验证了一些代码是否正常工作。 •规范描述了一些代码的期望行为。 •一个示例显示了如何使用特定的API。...2. http://xp123.com/articles/3a-arrange-act-assert/ 查看期望行。 它读起来几乎就像它的英文等价物:“我们希望三明治的味道很美味。”

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    GitLab CICD 配置指南 .gitlab-ci.yml文件的配置

    默认有三个阶段, build,test,deploy,你不必每次编写都使用三个阶段,如果一个阶段没有任务,可以直接忽略它 因为.gitlab-ci.yml是存在于项目中的,所有可以进行版本,分支控制,...不同的分支,不同的版本可以有不同.gitlab-ci.yml内容 不用的任务 .gitlab-ci.yml 文件是使用YAML的文件格式来编写的,只允许空格,不允许Tabs 在项目根目录创建一个文件,...- ruby -v - which ruby - gem install bundler --no-document - bundle install --jobs $(nproc)..."${FLAGS[@]}" rspec: script: - bundle exec rspec rubocop: script: - bundle exec rubocop...这是对大多数Ruby应用都适用的简单配置 定义了两个任务 rspec和rubocop 分别会执行不同的脚本 在每次任务执行之前,定义的before_script脚本都会先被执行 .gitlab-ci.yml

    1.1K10

    使用spring提高rails开发效率

    rails开发者都有着这样类似的经历: pair写了一个测试 运行测试 等待 该我来编写产品代码 运行测试 等待 代码有bug 测试失败 修复测试 运行测试 等待 测试通过,yeah!...###安装 建议把spring安装到rvm的global gemset中去,这样就可以在多个project使用spring 安装命令非常简单: gem install spring ###使用 执行测试的命令也非常简单...: spring rspec 当第一次使用spring运行测试,rake taks, db migration时,spring会自动在后台load rails 环境,因此执行速度也很慢,但是当再次执行时...###已知问题 把 require 'rspec/autorun'从spec_helper中删掉,否则,spec会被执行两次,而且第二次会由于找不到url helper method而失败。...Failure/Error: visit posts_path NameError: undefined local variable or method `posts_path' for #RSpec

    3.5K60

    Effective Testing with RSpec 3(介绍)

    我们将使用RSpec 3框架来探索编写测试的艺术。 RSpec的每个方面都旨在解决开发人员在野外遇到的一些问题。 有了它,您可以放心地构建Ruby应用程序。...如何使用本书 通过本书,您将分三个阶段学习RSpec 3: •第一部分:介绍练习,让您熟悉RSpec •第二部分:跨越几个章节的工作示例,以便您可以在一个有意义的大小项目中看到RSpec •第III-V...代码片段 我们在本书中提供了代码片段,展示了如何在实际情况中使用RSpec。 这些示例中的大多数旨在供您在计算机上使用,尤其是第I部分和第II部分中的示例。...你是谁 我们希望本书对广泛的开发人员非常有用,从刚刚开始使用RSpec的人到使用它编写成千上万的测试的人。也就是说,我们做了一些假设,以防止本书过于陷入介绍性材料。 首先,我们假设您熟悉Ruby。...,New Relic undees@gmail.com 俄勒冈州波特兰,2017年8月 7. http://rspec.info 8. http://rspec.info/documentation

    2K20

    “小众”之美——Ruby在QA自动化中的应用

    扩展性 支持Java平台的扩展 支持HTTP/RPC接口,可根据开发框架扩展 框架基于Rspec,支持多种验证方式(Build-In Matcher),及支持自定义Matcher,目前实现了JSON去噪的...接口的测试框架选择面还是比较多的,RPC调用的框架如何测试呢?...测试框架,使用接近自然语言的描述,提高了Case可读性,编写上也没有其他框架那么复杂。...,Session、Cookie、安全密码、邮件地址校验都有对应的gem,感觉不像是在写代码,更像是在配置项目,不知不觉,一个系统雏形就完成了,整理了下项目中使用到的gem,主要有以下这些。...当然应用“小众”技术,必然要面对不少挑战:如何迅速培养能掌握相关技术的同学,与其他语言平台的衔接问题,面对团队的质疑等。

    1.9K30

    客户端自动化测试研究

    在编写自动化脚本时,元素定位的唯一性是一个看似简单实际上会有很多坑的问题,脚本的稳定性一定程度上依赖了如何进行元素定位。...Calabash的BDD模式是大家认可的,也是大家愿意接受的,那就需要在新的方案中,继续使用这种方式编写维护测试用例。...最终需要依赖的库大致是这些: gem 'appium_lib', '~> 9.4.2' gem 'rest-client', '~> 2.0.2' gem 'rspec',...'~> 3.5.0' gem 'cucumber', '~> 2.4.0' gem 'rspec-expectations', '~> 3.5.0' gem...原有脚本无缝迁移 之前在使用Calabash的时候编写的脚本,在封装好公共Steps之后,几乎无缝的进行了迁移,对上层编写测试用例的同学来说,几乎没有变化,无需关心是Calabash还是Appium,使用和原先一样的

    3.3K120

    .gitlab-ci.yml关键词完整解析(二)

    如果任务被取消或者超时,after_script就不会被执行了,目前官方正在计划这个特性。....tests script: rake rspec only: variables: - $RSPEC 任务rspec 继承了.tests任务,在流水线中.tests是一个隐藏的任务...被rspec继承后,相同的key会以rspec为准,rspec没有的,而.tests有的,则合并到rspec中, 合并后的结果是 rspec: script: rake rspec stage...: test only: refs: - branches variables: - $RSPEC 使用这一个手段,可以写一个模板,只要稍微改改就能后使用。...非常适合大批量编写流水线。 include 使用include可以导入一个或多个额外的yaml文件到你的CICD配置里,这一你就可以将一个很长的流水线,分隔出来。使用include来引入。

    1.6K31

    .gitlab-ci.yml语法完整解析(三)

    关于如何编写GitLab流水线,.gitlab-ci.yaml文件的关键词,已经写过两期了,gitlab-ci.yaml的关键词一共有28个,分别是 分别是, script, after_script...为了避免这些错误,resource_group可以使用该属性来确保运行程序不会同时运行某些任务。资源组的行为类似于其他编程语言中的信号灯。...test: script: rspec retry: 2 timeout timeout是用于设置一个任务的超时时间, 你也可以设置一个项目级别的超时时间。...在CICD的设置中 build: script: build.sh timeout: 3 hours 30 minutes test: script: rspec timeout: 3h...然后在script或者执行的命中使用,定义和使用的示例, variables: DEPLOY_SITE: "https://example.com/" deploy_job: stage: deploy

    1.7K21

    Google 是如何设计 Ruby Serverless Runtime 的?

    Ruby 首先是一种面向对象的语言。当我们编写代码并将其封装在 def 中时,我们正在编写一个方法,这是响应发送给对象的消息而运行的代码。...例如,某些 FaaS 框架使您可以使用 def 在 Ruby 文件的顶层编写函数: def handler(event:, context:) "Hello, world!"...Ruby 运行时提供了一个 helper方 法模块,用于创建作为输入使用的 HTTP 请求和云事件对象,除此之外,大多数测试都非常容易编写。 然而,我们遇到的主要测试挑战之一与测试初始化代码有关。...该方法和其他 helper 方法定义在 FunctionsFramework::Testing 模块中,可以包含在 minitest 或 rspec 测试中。...对于使用 Google Cloud Functions 的 Ruby 应用程序,我们至少需要一个 gem,即 functions_framework,它提供了编写函数的 Ruby 接口。

    2.2K60

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

    GitLab CI/CD 是如何工作的 为了使用GitLab CI/CD,你需要一个托管在GitLab上的应用程序代码库,并且在根目录中的.gitlab-ci.yml文件中指定构建、测试和部署的脚本。...apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs - ruby -v - which ruby - gem...- bundle exec rspec rubocop: script: - bundle exec rubocop 上面的例子中,定义里两个作业,分别是 rspec 和 rubocop,...下面这个例子展示了如何使用Auto DevOps将GitLab.com上托管的项目部署到Google Kubernetes Engine 示例中会使用GitLab原生的Kubernetes集成,因此不需要再单独手动创建...紧挨着第二个是一个带小图像的图标,Prometheus将在其中收集有关Kubernetes集群以及应用程序如何影响它的数据(在内存/ CPU使用率,延迟等方面) ?

    10K43

    在本地运行 fyne 官网

    很快我发现 fyne 官网是采用 jekyll 构建的。jekyll 是采用 ruby 语言编写的静态网页工具。jekyll 常用于搭建个人博客。...它支持使用 markdown 语法编写文章,然后自动生成相应的静态页面托管在远程主机上供用户访问。为了能本地运行文档,我们必须先安装 ruby + jekyll 环境。...Mac 在 Mac 上可以直接使用 brew 安装 ruby 和 gem。 安装 jekyll gem 安装完成之后,安装 jekyll 就很简单了。...安装依赖 cd到developer.fyne.io目录,使用gem安装该网站的所有依赖: $ gem install -g gem 安装依赖的速度取决于你的网速,耐心等待~ ?...这时,我们就可以在浏览器中输入:http://localhost:4000就可以在本地随意浏览官网了。 ?

    6.2K30

    挖洞经验 | 看我如何综合利用4个漏洞实现GitHub Enterprise 远程代码执行

    另外,由于GitHub Enterprise使用Ruby Gem的faraday库来获取外部资源,并通过Gem的faraday-restrict-ip-addresses功能来防止用户请求内部服务。...在经过数天的研究之后,我发现其中一个8000端口名为Graphite的服务,该服务负责高度扩展地向用户实时显示系统当前状态,其为Python编写的开源项目(可点此下载源码)。...@nogg& url=http://127.0.0.1:6379/%0ASLAVEOF%20orange.tw%206379%0A 说明:由于Redis的SLAVEOF命令可以允许执行带外数据,所以,这对某些...在对大量源码的分析过程中,我对GitHub在Memcached中存储Ruby对象的机制觉得好奇,一番研究后发现,GitHub Enterprise使用Ruby Gem的Memcached方式来处理缓存,...我们可以使用前述的SSRF漏洞执行链来把恶意Ruby对象存储在Memcached中,当GitHub要获取缓存时,Ruby Gem memcached就会自动执行反序列化操作,这种效果就会是:哇,远程代码执行

    1.7K60

    iMac(OS X)日常开发中各种代理设置方法汇总(shell、Android Studio、gem、npm)

    写在前面 由于各种各样的墙的原因,导致日常开发中我们会遇到各种各样的因为网络的问题导致的不能访问、超时等问题。每次遇到都会去查一遍,很是费时,今天专门总结汇总一下。...由于考虑到需要不停的切断是否使用,因此这里不再介绍设备全局代理的设置方式。 对于mac环境,我们大部分时间都是使用命令行,因此代理配置相关的主要就是关于shell的代理配置。...两种方法都是使用export设置环境变量的方式来实现,方法一致: # 配置生效 export http_proxy='http://proxy.com:8080'; export https_proxy...,很多android的maven依赖都是使用https的,因此不要仅仅配置http相关的代理,需要同时配置https的 gem 代理设置 正如前面提到的,在某些情况下会出现shell配置了代理,但是并没有生效的情况...,然后根据剩余的镜像确定是否使用代理,这样会大大提升效率 本地安装 当然,gem除了设置代理或者直接修改镜像以外, 还可以直接本地安装,比如我们要安装 github-pages, 先到 https://

    1.4K80

    使用 YAML 文件配置 Jenkins 流水线

    * Jenkins 的版本过低,已经很难升级 * Wolox 过去几年增长显著,一直面临着如何伸缩的问题 * 只有极少数人如何修复 Jenkins 服务的问题 * 配置 Jenkins 任务不是一件简单的任务...Wolox 拥有广泛的项目,语言种类繁多,使得这个问题尤为突显。 考虑到这些问题,我们开始深入研究最新版的 Jenkins,看看如何提升我们的 CI 服务。...-O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat/jenkins.repo sudo yum install java-1.8.0...它能将 GitHub 的组织中符合规则的项目自动添加到 Jenkins 中。唯一的约束就是在每一个分支下都必须有一个 Jenkinsfile,用于描述如何构建项目。...共享库是用 Groovy 编写的,可以导入到流水线中,并在必要时执行。 如果你细心观察以下 Jenkinsfile,你会看到代码是一个接收闭包的方法调用链,我们执行另一个方法将一个新的闭包传递给它。

    4.8K40

    评测最火的 11 款 REST API GUI

    HTTPie HTTPie 是一个用 Python 编写命令行的 HTTP 工具,专为测试和调试 REST API 而开发,它确保了与 HTTP 服务器、RESTful API 和 Web 服务器的人性化交互...Curl 是一个基础的开源命令行工具,用于在服务器之间传输数据,同时支持创建 HTTP 请求并将其发送到后端服务中,同时也支持使用 cURL 命令发送 HTTP 请求,例如 POST、PUT 和 DELETE...Curl 的一些主要特点是: 允许发送依赖 HTTP 的请求 使用批量请求构建脚本 支持不同协议,如 HTTP、FTP、IMAP、SMTP 和 POP3 图片 Swagger Swagger 是一个开源工具...API 自动化工具,是基于 Ruby 的 RSpec 驱动框架。...它的一些主要特点是: 支持在 Rails 中编写的 API 允许与 Rack 应用程序一起工作 只需了解 Ruby 和 RSpec 基础知识 Apigee 图片 Apigee 是一个用于衡量和测试 API

    1.7K21

    如何使用DeadFinder寻找失效链接

    关于DeadFinder DeadFinder是一款功能强大的链接分析工具,该工具可以帮助广大研究人员快速地寻找目标页面中的无效链接(死链)。所谓死链,即一个页面中存在的无法被连接的一条链接。...这些链接如果一直保留在页面中的话,可能会影响SEO的效果,更严重的可能会影响整个网站的安全。因此,DeadFinder便应运而生,在该工具的帮助下,广大研究人员可以轻松识别和修改这些死链。...) 使用Gem安装 我们还可以使用Gem来安装DeadFinder: gem install deadfinder Docker镜像安装 除此之外,该工具还提供了预构建的Docker镜像: docker...扫描单个URL地址 deadfinder version:显示工具版本信息 c, [--concurrency=N]:设置并发数量,默认为20 t, [--timeout=N]:设置HTTP...超时,默认为10秒 o, [--output=OUTPUT]:存储JSON结果 (向右滑动,查看更多) 运行模式 从STDIN扫描多个URL地址: cat urls.txt | deadfinder

    59610
    领券