Salve,
a tutti ho il seguente problema, se ho una classe che definisce al suo
interno una classe:
#!/usr/bin/env ruby
class Config
Inner classes
class Dir
attr_accessor :path
def intialize(path)
@path = path
end
end
end
E in un file separato scrivo la seguente Test::Unit:
#!/usr/bin/env ruby
require ‘backupIt’
require ‘test/unit’
class DirTest < Test::Unit::TestCase
def test_init
d1 = Config::Dir.new(".")
assert_equal ‘.’, d1.path
end
end
All’esecuzione dei test ho il seguente errore:
Loaded suite ./backupIt_test
Started
E
Finished in 0.001837 seconds.
- Error:
test_init(DirTest):
ArgumentError: wrong number of arguments (1 for 0)
./backupIt_test.rb:8:ininitialize' ./backupIt_test.rb:8:in
test_init’
1 tests, 0 assertions, 0 failures, 1 errors
Penso che il problema derivi da problemi di visibilita’ della classe
interna. Dove sbaglio?
Dal momento che ci sono vi chiedo anche: Che visibilita’ hanno le classi
interne? Ve lo chiedo perche’ nel programma principale, se scrivo
Config::Dir.new funziona, mentre nella Unit::Test no.
Esiste qualcosa di analogo al metodo “private” per rendere una classe
interna visibile solo all’interno della classe esterna che la contiene?
grazie!
Gendag