RSpec 的 let 是一个很方便的用法,但是今天在写一段测试的时候,死活通不过。刚开始还怀疑是 PostgreSQL 的查询语法有什么特殊的(刚用PostgreSQL,还不熟),结果查了一圈发现,是我用错了 let 语句。来看看这段测试
describe "scope" do
let(:articles) { rand(2..10).times.map { create(:article) } }
let(:drafts) { rand(2..10).times.map { create(:draft) } }
it "published should match all published articles" do
expect(Article.published.to_a).to eq(articles)
end
it "drafts should match all drafts" do
expect(Article.drafts.to_a).to eq(drafts)
end
end
看起来似乎没什么问题,直到发现了这个
http://stackoverflow.com/a/5359979/960494 ,原来 let 和 before(:each) 有一个区别就是,let 语句的 block 只有在调用到对应的变量时才运行。所以,我调换了一下顺序,就好了。
describe "scope" do
let(:articles) { rand(2..10).times.map { create(:article) } }
let(:drafts) { rand(2..10).times.map { create(:draft) } }
it "published should match all published articles" do
expect(articles).to eq(Article.published.to_a)
end
it "drafts should match all drafts" do
expect(drafts).to eq(Article.drafts.to_a)
end
end
---------------------------------
Update: 2013-11-27
只需把原测试代码中的let换成let!就可以了。
出处:
https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/helper-methods/let-and-let
分享到:
相关推荐
rspec-api-blueprint-formatter, 从RSpec测试自动生成API文档 ! RSpec APIBlueprint格式化程序从RSpec测试自动生成API文档 !像这样it 'retrievs the patients medications' do retrieve_medications
rspec-mocks 是一个 rspec 的 test-double 框架,支持 method stubs, fakes 和生成 test-doubls 和类似真的对象的预期消息。 标签:rspec
RSpec和Cucumber可以很好地协同工作,RSpec负责单元测试和集成测试,而Cucumber则处理验收测试。 2. **RSpec**与**Cucumber**的结合使用可以覆盖从底层代码到用户界面的完整测试范围,确保了软件质量的同时也促进...
rspec-2.x 是一个 meta-gem,依赖于其他组件:rspec-core, rspec-expectations 和 rspec-mocks 。每个组件都可以使用 gem 命令独立安装和运行。 标签:rspec
RSpec-bank是基于Ruby编程语言和RSpec测试框架的一个项目,主要用于模拟银行系统的核心功能。这个项目的源码深入揭示了如何使用RSpec进行行为驱动开发(BDD)以及如何构建一个简单但完整的银行应用。下面,我们将...
`rspec-style-guide` 是一个专门针对 Ruby 编程语言中的测试框架 RSpec 提出的一套编码风格指南,旨在提供最佳实践,帮助开发者编写出更清晰、更具可读性和一致性的测试代码。以下是对 `rspec-style-guide` 中涉及的...
安装gem install rspec # for rspec-core, rspec-expectations, rspec-mocksgem install rspec-mocks # for rspec-mocks only想要与main分支对抗吗? 您还需要包括相关的RSpec存储库。 将以下内容添加到您的Gemfile ...
rspec-core 是 RSpec 运行和格式化工具。rspec-core 提供一个框架,用来书写你的代码应该怎样表现的可执行案例;以及一个 rspec 命令工具来限制哪些案例可以运行,调整输出格式。 标签:rspec
rspec-puppet, 针对 Puppet 清单的RSpec测试 你的Puppet的RSpec测试&模块 安装gem install rspec-puppet注意 ruby 1.8用户: 尽管 rspec-puppet本身支持 ruby 1.8,但你需要将rspec
我们之前已经了解了测试驱动开发以及阅读和理解 RSpec 测试的概念。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
我们之前已经了解了测试驱动开发以及阅读和理解 RSpec 测试的概念。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
我们之前已经了解了测试驱动开发以及阅读和理解 RSpec 测试的概念。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
我们之前已经了解了测试驱动开发以及阅读和理解 RSpec 测试的概念。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
之前我们已经介绍了测试驱动开发的概念以及阅读和理解 RSpec 测试。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
之前我们已经介绍了测试驱动开发的概念以及阅读和理解 RSpec 测试。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
我们之前已经了解了测试驱动开发以及阅读和理解 RSpec 测试的概念。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
我们之前已经了解了测试驱动开发以及阅读和理解 RSpec 测试的概念。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
我们之前已经了解了测试驱动开发以及阅读和理解 RSpec 测试的概念。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
我们之前已经了解了测试驱动开发以及阅读和理解 RSpec 测试的概念。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...
我们之前已经了解了测试驱动开发以及阅读和理解 RSpec 测试的概念。 每次运行learn运行实验室测试时,您都在运行 RSpec 测试套件 - 这就是我们在 Learn 上构建实验室的方式。 您阅读这些测试已经有一段时间了,但是 ...