不是的
估计每天有十几二十单这样的吧,不是很多
是的,公司是电商,是用到这样的
曾经遇到过类似的,你的 layout application.html.erb 格式是不是被你改成了 application.slim 了?
你这个头像是要搞事情
+1
之前是做到什么需要什么就去看什么,根本就没认真看完全部的
是的,吓的我也看了一遍
这个我知道,因为有对应的 Model
我是从 rails4 开始学的,然而是跟着敏捷开发那本书学的,然而里面关于多对多是通过使用 has_many through,以至于我做的项目遇到多对多都是通过这种来实现的,然后今天看到这关于 has_many_and_belongs_to 的讨论才知道这中间表是要自己建的 ,如果面试我的人也是问我这个问题,估计我也懵逼了,而我也差不多算有 3 年的工作经验了。
分母+1
gem 'database_cleaner' 放到 test 的 group 里面
有个 gem 可以测试完后自动删除测试数据的,你就不用写个 Like.destroy_all 上去了,而且测试数据一般在测试完后都是要删的
难道这个测试还跟数据库有关?我用的是 sqllite3,你这里用的是什么数据库
不知道你项目具体代码是怎么样的,无法排出问题
你测试里面是不是还有什么别的代码啊?
我数据库里也没有 liker 和 liked_article,但是我的能通过
https://github.com/kai209209/like 我把我做的放到 github 里了,你看看跟你项目的 like 有没有什么区别吧
你项目里面没有迁移文件的?
你测试数据库迁移了吗?你到命令行下执行 rails db:migrate RAILS_ENV=test,然后再测试
test "liker-id and liked-article-id unique" do
Like.destroy_all
@like.valid?
p "111!!!!#{@like.valid?}"
p "@like errors: #{@like.errors.messages}"
assert @like.valid?
assert @like.save
p "2222!!!!!#{@like.attributes}"
@other = Like.new(liker_id: 1, liked_article_id: 1)
p "3333!!!!#{@other.valid?}"
p "4444!!!!#{@other.errors.messages}"
assert_not @other.save
end
你测试用例改这样啊,看@like输出的的错误是什么
p "111!!!!#{@like.valid?}"
p "@like errors: #{@like.errors.messages}"
添加一行,看看输出的是什么错误
我这里输出是这样的
你改成这样
test "liker-id and liked-article-id unique" do
Like.destroy_all
@like.valid?
p "111!!!!#{@like.valid?}"
assert @like.valid?
assert @like.save
p "2222!!!!!#{@like.attributes}"
@other = Like.new(liker_id: 1, liked_article_id: 1)
p "3333!!!!#{@other.valid?}"
p "4444!!!!#{@other.errors.messages}"
assert_not @other.save
end
然后看看输出是什么?
你测试改这样
def setup
@like = Like.new(liker_id: 1, liked_article_id: 1)
end
test "liker-id and liked-article-id unique" do
Like.destroy_all
@like.valid?
assert @like.valid?
assert @like.save
@other = Like.new(liker_id: 1, liked_article_id: 1)
assert_not @other.save
end
我刚刚新建了一个跟你一样代码的项目做了测试,似乎就是你测试数据库里的 like 表的数据没有清除导致的。 like 里面添加 validates :liker_id, uniqueness: { scope: :liked_article_id} 然后我这里测试通过了
你测试数据库表里面的数据在你测试完后会自动删除掉数据吗?
_id 可以省
完整的写就是这样:validates :liker_id, uniqueness: { scope: :liked_article_id}
like 就是 like_id 啊