测试 Controller 里面的 instance variables 应该怎么测试?

TheLover_Z · 2013年09月24日 · 最后由 kenshin54 回复于 2013年09月24日 · 2364 次阅读

Controller 如下:

class VersionsController < ApplicationController def index @version = Version.find(:all, :conditions => { :status => nil }) end end

然后在 RSpec 想获取到这个 @version,搜了如下方法都不行…

  1. VersionsController.instance_variable_get(:version) 会提示 is not allowed as an instance variable name.

  2. expect(assigns(:version)).to be_a_new(Version) 会提示 :version[]...

assigns 啊

#1 楼 @zgm

代码:

it "foo bar" do get 'index' a = assigns(:version) binding.pry

然后:

[1] pry(#RSpec::Core::ExampleGroup::Nested_1::Nested_1)> a => []

试试加上 '@' VersionsController.instance_variable_get(:@version)

#1 楼 @zgm #3 楼 @karma

发现问题了……因为 test 数据库本来就是空的……谢谢两位啦~

#2 楼 @TheLover_Z 如果没有拿到应该是 nil, [] 的话肯定拿到了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号