我希望能够拥有专门用于开发和测试的TestUser
模型,其行为与我的普通用户模型完全相同,只是它始终进行身份验证。
这里的关键问题是让TestUser
始终在User上调用类方法并查找它的类级别实例变量,就像它是普通用户一样,而不是通过cattr_accessor
来完成,即:
class User
class << self
attr_accessor :foo
end
end
class TestUser ?< ??
??
end
---
User.foo = 'bar'
TestUser.foo => 'bar'
User.new.authenticate?('password') => maybe, runs authentication
TestUser.new.authenticate?(_) => true
我知道我可以通过将用户在测试和开发中扩展到始终进行身份验证来完成我想要的工作,但我想知道是否可以使用额外的类来完成它。
答案 0 :(得分:0)
如果你不打算在生产中使用它,我不会浪费任何时间。
你有一些测试可以让你“始终对一个用户进行身份验证”,但为什么要浪费时间来解决这个问题呢,当你可以为你的最终目标编码时,更快/更强/更好地解决这个问题...无论你的目标是什么。
答案 1 :(得分:0)
class TestUser < User
def authenticate?
true
end
end
但如果你只是测试你的代码,你应该使用tests / rspec。
您可以使用:cattr_accessor :foo
来访问类变量。