Rails中如何用assert_pattern匹配指定长度的关联数组?
简洁匹配指定长度数组的方法
在Rails模型测试中使用assert_pattern断言关联条目数量时,不用手动罗列多个Book实例来构建数组模式,有两种简洁方式:
匹配指定长度且元素均为Book类型:利用Ruby模式匹配的重复操作符,写成
(Book,) * 5即可代表由5个Book实例组成的数组模式,示例代码:assert_pattern author.books, (Book,) * 5仅匹配数组长度,不限制元素类型:用下划线
_表示任意匹配项,结合Array.new生成指定长度的模式:assert_pattern author.books, Array.new(5, _)
你之前尝试的[Book]*5触发语法错误,是因为这种写法不符合Ruby模式匹配的语法规范,而带括号的(模式,) * 数量是官方支持的重复模式写法。
内容的提问来源于stack exchange,提问作者Dan Monego
相关产品推荐
相关产品推荐

