gpt4 book ai didi

ruby-on-rails - 在 RSpec 中引用类名

转载 作者:数据小太阳 更新时间:2023-10-29 08:48:14 24 4
gpt4 key购买 nike

将常量或带引号的字符串传递给类名的 rspec 有什么区别吗?

常数:

require 'spec_helper'

describe Match do
end

引用:

require 'spec_helper'

describe "Match" do
end

最佳答案

describe 的第一个参数是该示例组的描述。但是,根据 https://www.relishapp.com/rspec/rspec-core/v/3-0/docs/subject/implicitly-defined-subject :

If the first argument to the outermost example group is a class, an instance of that class is exposed to each example via the subject method.

它还添加了:

While the examples below demonstrate how subject can be used as a user-facing concept, we recommend that you reserve it for support of custom matchers and/or extension libraries that hide its use from examples.

行为规则比上面暗示的要复杂一点,但是,至少从 RSpec 2.99 开始是这样。例如,非类参数仍然通过 subject 方法公开,但最里面的示例组优先。此外,关于实例化类的规则将适用,即使它不是最外层的示例组。

以下传递示例说明了更多情况:

# simple case for class
describe Object do
specify {subject.should be_an_instance_of(Object)}
end

# simple case for non-class
describe "String" do
specify {subject.should be_eql("String")}
end

# nested non-class arguments; inner takes precedence
describe "Outer String" do
describe "String" do
specify {subject.should be_eql("String")}
end
end

# nested class arguments; outer takes precedence
describe Object do
describe Module do
specify {subject.should be_an_instance_of(Object)}
end
end

# class inside non-class; class takes precedence
describe "String" do
describe Object do
specify {subject.should be_an_instance_of(Object)}
end
end

# class inside explicit subject; explicit subject takes precedence
describe "Outer string" do
subject {"String"}
describe Object do
specify {subject.should be_eql("String")}
end
end

# class outside explicit subject; explicit subject takes precedence
describe Object do
subject {"String"}
describe Module do
specify {subject.should be_eql("String")}
end
end

关于ruby-on-rails - 在 RSpec 中引用类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com