我有這樣的代碼:語法錯誤,意想不到的 ':',預計 ')'(的SyntaxError)
19 context 'overriding at fabricate time' do
20 let(:fabricated_object) do
21 Fabricate(
22 "#{fabricator_name}_with_children", do
23 string_field: 'new content',
24 number_field: 10,
25 nil_field: nil,
26 placeholder: 'is not invoked',
27 dynamic_field: { 'new dynamic content' }
28 end)
29 end
製造商:
1 class Fabrication::Fabricator
2
3 def self.build(name, overrides={}, &block)
4 fail_if_initializing(name)
5 schematic(name).build(overrides, &block)
6 end
7
8 def self.fabricate(name, overrides={}, &block)
9 fail_if_initializing(name)
10 schematic(name).fabricate(overrides, &block)
11 end
12
13 def self.to_attributes(name, overrides={}, &block)
14 fail_if_initializing(name)
15 schematic(name).to_attributes(overrides, &block)
16 end
17
18 def self.to_params(name, overrides={}, &block)
19 fail_if_initializing(name)
20 schematic(name).to_params(overrides, &block)
21 end
22
23 private
24
25 def self.fail_if_initializing(name)
26 raise Fabrication::MisplacedFabricateError.new(name) if Fabrication.manager.initializing?
27 end
28
29 def self.schematic(name)
30 Fabrication::Support.find_definitions if Fabrication.manager.empty?
31 Fabrication.manager[name] || raise(Fabrication::UnknownFabricatorError.new(name))
32 end
33
34 end
,但我不斷收到
integration_spec.rb:23: syntax error, unexpected ':', expecting ')' (SyntaxError)
string_field: 'new content',
^
/home/durrantm/Dropbox/96_2013/work/code/ruby/fabrication_temp/spec/_seded/integration_spec.rb:23: syntax error, unexpected ',', expecting kEND
/home/durrantm/Dropbox/96_2013/work/code/ruby/fabrication_temp/spec/_seded/integration_spec.rb:25: Can't assign to nil
/home/durrantm/Dropbox/96_2013/work/code/ruby/fabrication_temp/spec/_seded/integration_spec.rb:26: syntax error, unexpected ':', expecting '='
placeholder: 'is not invoked'
^
/home/durrantm/Dropbox/96_2013/work/code/ruby/fabrication_temp/spec/_seded/integration_spec.rb:27: syntax error, unexpected ')', expecting kEND
...
我怎樣才能解決這個問題? 我試過用很多方法格式化哈希,但都沒有工作。
代碼使用這種格式的工作(我想移動到期望的那樣):
context 'overriding at fabricate time' do
let(:fabricated_object) do
Fabricate(
"#{fabricator_name}_with_children",
string_field: 'new content',
number_field: 10,
nil_field: nil,
placeholder: 'is not invoked'
) do
dynamic_field { 'new dynamic content' }
end
end
我也試過:
19 context 'overriding at fabricate time' do
20 let(:fabricated_object) do
21 Fabricate(
22 "#{fabricator_name}_with_children",
23 { string_field: "new content",
24 number_field: 10,
25 nil_field: nil,
26 placeholder: 'is not invoked',
27 dynamic_field: { 'new dynamic content' }})
28
29 end
,但得到
integration_spec.rb:23: odd number list for Hash (SyntaxError)
{ string_field: "new content",
爲了完整起見,你可以包含所有匹配的'end'嗎?因爲沒有它們本身就是一個SyntaxError。還有你使用的是什麼Ruby版本? –
你使用的是哪個版本的ruby? – Yossi
紅寶石1.9.3-p194或紅寶石1.9.3-p448(紅寶石2.0有其他問題)。業。不是1.8 :) –