2

当我尝试实现“Fakeweb”时出现此错误,但我不明白这个问题。

场景:“用户填写完所有信息后,系统将使用“fbid”属性之一进行验证,如果成功则只会创建一个新公司,否则该过程将失败。

Failures:
1) Companies new company create with valid information correct facebook id validates facebook id
 Failure/Error: it "should create a company" do
 NoMethodError:
   undefined method `it' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_3::Nested_1::Nested_1:0x00000102fb84e0>
 # ./spec/requests/companies_spec.rb:40:in `block (5 levels) in <top (required)>'

公司_spec.rb

    describe "correct facebook id" do               
        #validate fbid
        it "validates facebook id" do
            FakeWeb.register_uri(:head, "http://graph.facebook.com/examplecompany", :username => 'examplecompany')
            Company.new(:url => "http://graph.facebook.com/examplecompany").fb_id_string.should eq('examplecompany')

            it "should create a company" do 
                expect { click_button submit }.to change(Company, :count).by(1)
            end

型号/公司.rb

def fb_id_string
    uri = URI.parse(url)
    response = Net::HTTP.start(uri.host, uri.port) { |http| http.request_head(uri.path) }
    response["username"].to_str
end    

结尾

4

1 回答 1

4

由于进行谷歌搜索rspec nested it不会产生任何结果,我想我会详细说明@apneadiving 的评论。

虽然 rspec 允许describe其同义词任意嵌套,并且在传递字符串参数时it类似于describe其结构,但it块只能包含模拟、期望、应用程序代码和 vanilla Ruby。它不能包含对itor 的其他调用,就此而言beforeafterlet。它可以调用subject,但这样做只会调用主题定义为的块;它不会重新定义主题。

相反,模拟和期望不能直接在describe. 它们必须包含在it.

于 2013-07-23T13:26:58.703 回答