Jac*_*ack 0 ruby testing unit-testing ruby-on-rails
家长班:
account.rb
class Account
attr_reader :owner, :interest
attr_accessor :funds
def initialize(args)
@funds = args[:funds]
@owner = args[:owner]
@interest = 0.01
end
end
Run Code Online (Sandbox Code Playgroud)
saving_account.rb
class SavingAccount < Account
attr_reader :interest
def initialize(args)
@interest = 0.05
super(args)
end
end
Run Code Online (Sandbox Code Playgroud)
我跑的时候
saving_acc = SavingAccount.new(funds: 10000, owner: "Jack")
assert_equal(0.05, saving_acc.interest)
Run Code Online (Sandbox Code Playgroud)
我明白了:
NoMethodError:未定义的方法
interests' for #<SavingAccount:0x007fa711853828> tests/saving_account_test.rb:13:intest_interests'
我究竟做错了什么?
super在分配之前更改呼叫顺序.
class SavingAccount < Account
attr_reader :interest
def initialize(args)
super(args)
@interest = 0.05
end
end
Run Code Online (Sandbox Code Playgroud)
BTW,这是导致错误的拼写错误.
assert_equal(0.05, saving_acc.interests)
^
Run Code Online (Sandbox Code Playgroud)
除此之外,@interest不是类变量,而是实例变量.