【问题标题】:How to create variables names with iteration and interpolation? [duplicate]如何使用迭代和插值创建变量名称? [复制]
【发布时间】:2017-06-05 17:46:54
【问题描述】:

假设writersbooks 之间存在关联 (bibliography),其中一位作家 John Pencil 写了 16 本书。 Fixture bibliography.yml 列出所有书籍如下:

association_1:
    writer: john_pencil
    book: book_1

association_2:
    writer: john_pencil
    book: book_2

... 

我需要测试主页是否显示了 J.P. 书籍的完整列表。
因此,如果我可以在测试的设置方法中使用某种插值,我可以这样做:

(1..16).each do |num|
    book_#{num} = bibliography("association_#{num}".to_sym).book
end

然后我可以测试书籍列表是否存在如下:

(1..16).each do |num|
    assert_select "td.book_isdn", book_#{num}.isdn
    assert_select "td.book_title", book_#{num}.title
    assert_select "td.book_genre", book_#{num}.genre
    assert_select "td.book_author", book_#{num}.author  
end

当然,我不能使用book_#{num},我想知道我是否可以像处理"association_#{num}".to_sym 那样使用一些权宜之计来进行插值工作

【问题讨论】:

  • 有什么理由不能只使用数组吗?

标签: ruby-on-rails ruby interpolation fixtures


【解决方案1】:

是的,不要那样做。相反,创建一个书籍数组并使用它的元素。

books = (1..16).map do |num|
  bibliography("association_#{num}".to_sym).book
end

然后

books.each do |book|
  assert_select "td.book_isdn", book.isdn
  assert_select "td.book_title", book.title
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多