Ruby on rails ActiveRecord错误后RSpec停止运行

Ruby on rails ActiveRecord错误后RSpec停止运行,ruby-on-rails,ruby,activerecord,rspec,Ruby On Rails,Ruby,Activerecord,Rspec,快速问题: 我的RSpec代码片段: it 'is invalid with a duplicate email address' do jakeSnow = Contact.new( firstname: 'Jake', lastname: 'Snow', email: 'lordcommander@nightswatch.com' ) expect(jakeSnow).to have(1).errors_on(:email)

快速问题:

我的RSpec代码片段:

  it 'is invalid with a duplicate email address' do
    jakeSnow = Contact.new(
      firstname: 'Jake',
      lastname: 'Snow',
      email: 'lordcommander@nightswatch.com'
    )
    expect(jakeSnow).to have(1).errors_on(:email)
  end
有一封邮件已保存到数据库,上面的电子邮件已被接收。在终端中运行rspec时,我得到一个ActiveRecord错误:

 Validation failed: Email has already been taken (ActiveRecord::RecordInvalid)

测试似乎停止运行。我的目标是测试使用接收的电子邮件是否会返回错误。在我的测试验证了这一点之后,我希望继续进行,而不是因为遇到错误而停止。我应该如何重写代码来实现这一点?

您的spec\u助手中是否有
config.fail\u fast=true
?或者应用程序根目录中的
.rspec
文件中的
--快速失败
?进一步的问题-您的测试数据库是否干净?你们用绒布做工厂女工吗?您显示的错误无权被您给出的示例抛出-您根本没有在这里运行验证。尽管与BroiSatse的想法相同,实际上创建新模型不会自动触发验证并因此向模型中添加错误,您是否可以尝试expect{jackSnow.valid?}。将{jackSnow.errors}从(nil).更改为(…)顺便说一句,是jonSnow…嗯,Jack正在窃取Jon的电子邮件,因此需要检查并拒绝此^。^我尝试了config.fail_fast=true和--fail fast in.rspec,但仍然收到错误(请记住,我在上述电子邮件中保留了jonSnow,并且电子邮件具有验证唯一性)。您确定错误来自此示例,而不是另一个示例吗?