如何在rspec2中定义套件。确实,套房是什么?
我想将我的规格分解为两个套件,并在运行两个套件之间重置所有内容(清理测试数据库,重置warden等等)。我想我可以用before(:suite)块来做到这一点。
更新: 我的理解是一个例子是:
it "should be true" do
...
end
一个群体就像是:
describe Model do
...
end
这种理解似乎通过在我的代码中添加一些调试语句来验证。但是如何定义套件?它只是spec文件夹中的所有规格吗?在哪种情况下有办法实现我想要做的事情?
(我真的很惊讶,我无法通过谷歌搜索或以前的问题的答案找到它。)
答案 0 :(得分:1)
正如我所看到的,RSpec本身没有像套件这样的东西。我挖了一下,发现了以下内容:
:suite
作为范围。含义:如果:each,则在每次匹配之前运行块 例。如果:all,则在任何匹配之前,每个组运行一次块 示例已经运行。如果:suite,则块之前运行一次 任何示例组都已运行。
因此,如果您在示例组中划分规范,则可以使用eg控制。 before(:suite) do ...
每个示例组应该做什么。
答案 1 :(得分:1)
您可以使用单独的描述调用,也可以在调用之前和之后执行:
describe "some cool text for suite 1" do
before do
...
end
it "some test in suite 1" do
...
end
...more tests...
after do
...
end
end
describe "some cool text for suite 2" do
...same shape as above...
end
这将允许您为您的相关测试集分离“设置”和“拆除”。然后,您可以使用
添加rake任务以按套件运行spec testrspec spec/ -e"Suite 1" # call this task spec:suite1 or something like that
我没有完成rake任务的一部分,但我经常用这种机制定义概念套件。