ruby - 在 rspec 测试中填充实例变量

标签 ruby rspec stubbing

我有一个具有以下初始化方法的类。

def initialize(my_var)
  @my_var = my_var
end

然后我想测试对 @my_var

做些什么的方法
def split
  @my_var.split(",")
end

如何在测试它正确返回数组之前更改 @my_var

如果没有 @my_var 的访问器,这是可能的吗?

最佳答案

这听起来不像是正确的做法。 Rspec 应该测试类和模型的接口(interface)行为——而不是内部实现(无疑是实例变量)。有多种方法可以做到这一点,但您确定不想为该变量设置访问器吗?

无论如何,您可以使用 my_object.instance_variable_get("@my_var")my_object.instance_variable_set("@my_var", value) 来操作变量。

关于ruby - 在 rspec 测试中填充实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069536/

相关文章:

ruby-on-rails - Rails Whenever Gem 如何在 Controller.rb 文件中运行特定方法

ruby-on-rails - 将 HAML 与 RSPEC 集成

java - Mockito:如何 stub 无效方法以在调用时运行一些代码

ruby-on-rails - RSpec关于 Controller 和 stub

ruby - 使用键、值和索引作为 block 参数减少散列

javascript - Rails CORS:ActionController::RoutingError(没有路由匹配 [OPTIONS] "/batches"):

ruby-on-rails - 如何在 Cucumber 中测试不同的环境(例如开发|测试|生产)?

ruby - 对 Ruby 中的 block 行为感到困惑

ruby - 你如何在 rspec/capybara 中测试一个 div 是否具有特定的 css 样式?

ruby-on-rails - capybara 测试中的 stub 时间