我想实现方法User.calculate_hashed_password
。我正在尝试使用与Rails的内置测试工具配合使用的Shoulda测试库,因此与Test :: Unit相关的答案与与Shoulda(我认为)相关的答案一样好。
我正在试图找出我需要测试的 以及 我应该测试它。我最初的想法是做一些像......
class UserTest < ActiveSupport::TestCase
should 'Return a hashed password'
assert_not_nil User.calculate_hashed_password
end
end
这是正确的方法吗?
答案 0 :(得分:8)
您不需要测试该方法是否存在,只是该方法行为正确。说这样的话:
class UserTest < ActiveSupport::TestCase
setup do
@user = User.new
end
should 'Calculate the hashed password correctly'
@user.password = "password"
@user.hashed_password = "xxxxx" # Manually calculate it
end
end
(我不使用shoulda,所以请原谅任何明显的语法错误。)
如果该方法不存在,该测试将失败。
答案 1 :(得分:5)
我同意奥托;但正如dylanfm所说,我使用#respond_to来测试RSpec中的关联。
it "should know about associated Projects" do
@user.should respond_to(:projects)
end
答案 2 :(得分:3)
也许使用respond_to?
答案 3 :(得分:0)
您应该在较新版本的Rails中查看Object#respond_to?和Object#try。如果您不熟悉测试,请务必仔细阅读excellent guide on testing in Rails。