首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制器规范+ draper

控制器规范+ draper
EN

Stack Overflow用户
提问于 2012-03-18 17:29:01
回答 1查看 540关注 0票数 3

我使用的是rspec和draper gem https://github.com/jcasimir/draper

在我的控制器中,这是一个简单的动作展示

代码语言:javascript
复制
def show
  @category = Category.find(params[:id])
  @products = ProductDecorator.decorate(@category.products)
end

和测试

代码语言:javascript
复制
describe "#show" do
  before { @category = Factory :category }
  before do
    @product1 = Factory :product, category: @category
    @product2 = Factory :product, category: @category
  end
  before { get :show, id: @category.id  }

  it { should respond_with :success }
  it { assigns(:products).should eq [@product1, @product2] }
end

在项目中,所有工作正常,产品显示正常,但在测试中我得到这样的错误

代码语言:javascript
复制
Failure/Error: it { assigns(:products).should eq [@product1, @product2] }

   expected: [#<Product ... >, #<Product ...>]
        got: nil

   (compared using ==)

同样,如果我只用@category.products替换ProductDecorator.decorate(@category.products) -没有错误

如果我检查@products

代码语言:javascript
复制
def show
  @category = Category.find(params[:id])
  @products = ProductDecorator.decorate(@category.products)
  puts @products.inspect
end

得到

代码语言:javascript
复制
#<DecoratedEnumerableProxy of ProductDecorator for [#<Product ...>, #<Product ...>]>

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-03-20 20:52:07

为什么只是测试你在作业中定义了这个装饰者?

代码语言:javascript
复制
it { assigns(:products).should eq(ProductDecorator.decorate([@product1, @product2] }))
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9757271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档