在RSpec中,我们如何从一个例子中生成一个字符串,表示当前示例的当前元描述?
示例:
current_metadata_description
正如我们所看到的,给定示例的当前元描述是:
Api :: V1 :: Public :: Signin :: ByEmailController POST #create当提供者为“email”时,如果密码是好的登录时有保存的电子邮件
感谢。
修改
RSpec不提供if let mediaType = info[UIImagePickerControllerMediaType] as? String {
if mediaType == "public.image" {
print("Image Selected")
}
if mediaType == "public.movie" {
print("Video Selected")
}
}
。我刚刚发明了它,以举例说明我想拥有的东西。
答案 0 :(得分:1)
虽然我不确定你的整体意图是做什么的。
Rspec::Core::ExampleGroup.it
为该块产生RSpec::Core::Example
。与所有屈服方法一样,可以捕获块局部变量中的屈服Object
。 RSpec::Core::Example
有一个full_description
方法,看起来就像您要找的那样。 RSpec Source。
例如(没有双关语):
describe String do
context 'Down' do
context 'Deeper' do
it 'can describe itself' do |ex|
# ex is the specific RSpec::Core::Example for this it block
expect(ex.full_description).to eq('String Down Deeper can describe itself')
end
end
end
end
运行此将返回
.
Finished in 0.003 seconds (files took 0.21998 seconds to load)
1 example, 0 failures
如果您想要所需的输出,则必须捕获所产生的值,因为块本身是在RSpec::Core::ExampleGroup
的实例的上下文中执行的,因此调用self.class.metadata[:full_description]
将包含{的描述{1}}但不是RSpec::Core::ExampleGroup
本身(例如" String Down Deeper")
如文档中所述,如果这是用于记录目的(或者您希望每个示例的此信息类似),您可以访问RSpec::Core::Example
摘录中的RSpec::Core::Example
:
Hooks
如果你真的想补丁(我不赞同)你可以做以下
# Useful for configuring logging and/or taking some action based
# on the state of an example's metadata.
#
# RSpec.configure do |config|
# config.before do |example|
# log example.description
# end
#
# config.after do |example|
# log example.description
# end
#
# config.around do |example|
# log example.description
# example.run
# end
# end
然后你的测试就像你说的那样。
答案 1 :(得分:0)
尝试使用--format
option运行rspec:
bundle exec rspec --format documentation
<强>更新强>:
我不知道任何可以为你做这件事的rspec方法。我能想到的一种方法是,在运行测试时将规范描述写入文件,然后在自定义current_metadata_description
方法中从中读取描述。这是关于Generating documentation from specs.希望有帮助的教程!