assert_equal使用I18n.translate时的问题
程序员文章站
2022-03-03 07:58:23
...
今天重新在depot运行测试,用静态测试数据测试商品标题的唯一性,发现有个断言过不去:
assert_equal I18n.translate('activerecord.errors.messages.taken'), product.errors[:title]
错误信息:
1) Failure: test_product_is_not_valid_without_a_unique_title_-_i18n(ProductTest) [E:/works/rubyaptana/rails/test/unit/product_test.rb:67]: <"has already been taken"> expected but was <["has already been taken"]>. 5 tests, 24 assertions, 1 failures, 0 errors, 0 skips
后面发现在是因为没有照Agile Web Development with Rails Fourth Edition书上说的写。product.errors[:title]后还有join("; ")
看日志应该是一个字符串,和一个只有一个字符串元素的数组的区别。
经乱试,发现两种方式都可以通过:
1.
assert_equal I18n.translate('activerecord.errors.messages.taken'), product.errors[:title].join("")
2.
assert_equal I18n.translate(['activerecord.errors.messages.taken']), product.errors[:title]
product_test.rb的测试方法是这样的:
test "product is not valid without a unique title - i18n" do product = Product.new(title: products(:ruby).title, description: "yyy", price: 1, image_url: "fred.gif") assert product.invalid? assert_equal I18n.translate(['activerecord.errors.messages.taken']), product.errors[:title] #assert_equal I18n.translate('activerecord.errors.messages.taken'), product.errors[:title].join("") end
推荐阅读
-
PHP中使用foreach时加&符号的用法
-
使用unset()时出现的异常如何解决
-
搜索引擎–解决django中同步数据库syncdb时的编码问题
-
php中使用addslashes函数报错问题的解决方法_PHP
-
关于memcache的使用(入门级有关问题),memcache已经配置好,怎么才能通过使用它来加快访问速度
-
求教关于PDO使用的有关问题
-
使用MySQL MySqldump命令导出数据时的注意事项
-
spring boot项目使用@JsonFormat失效问题的解决
-
尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
-
在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决思路详解