我正在尝试进行测试通过,在删除设计注册时,删除用户模型的依赖项。这主要是好奇心问题,因为它似乎在手动完成时起作用,但我从未放弃机会去了解我做错了什么。
这是设置 用户模型:
class User < ActiveRecord::Base
has_many :projects, :dependent => :destroy
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
项目模型:
class Project < ActiveRecord::Base
belongs_to :user
has_many :conts
has_many :models
validates :name, presence: true
after_validation :parameterize_and_underscore_name
end
失败的测试:
describe "cancel account" do
scenario "deletes all projects associated with user", :focus do
# @user created in a prior before loop
project = create(:project)
@user.projects << project
# both pass
User.all.size.should == 1
Project.all.size.should == 1
# also passes
User.find(1).projects.first.should == @project
click_button "Cancel my account"
# passes
page.should have_content "Bye! Your account was successfully cancelled. We hope to see you again soon."
# passes
User.all.size.should == 0
# fails
Project.all.size.should == 0
end
end
失败消息是:
Failure/Error: Project.all.size.should == 0
expected: 0
got: 1 (using ==)
正如我所说,手动执行此操作时,生成的SQL确实有效:
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
(0.2ms) BEGIN
Project Load (3.9ms) SELECT "projects".* FROM "projects" WHERE "projects"."user_id" = $1 [["user_id", 1]]
SQL (0.5ms) DELETE FROM "projects" WHERE "projects"."id" = $1 [["id", 1]]
SQL (0.3ms) DELETE FROM "users" WHERE "users"."id" = $1 [["id", 1]]
(0.7ms) COMMIT
那么,我是否应该注意某些问题(或者我完全处于错误的球场)或者这是我应该让开发人员知道的错误。如果它是一个bug,它是与devise,rspec还是capybara相关的bug(我怎么知道?)
备注:
我尝试过使用和不使用:js =&gt;是的,但没有区别