【问题标题】:Specs for the method of the model DRY模型 DRY 的方法规格
【发布时间】:2014-02-12 18:45:16
【问题描述】:

如果启用了新新闻,它会自动从以前的新闻中删除启用。 我写了一个规范,但他们失败了。由于这些规范可以改进吗?

Post.rb

before_validation :removes_enabled


def removes_enabled
  if enabled_changed? && enabled?
    Post.update_all( enabled: false )
  end
end

我的规格:

describe "#remove_enabled" do
  let!(:p1) {create :post, enabled: true }

  it "should remove enabled for other post" do
    p2 = create :post, enabled: true
    expect(p1.enabled).to eq(false)
  end

  it "should not remove enabled for other post if current post is not enabled" do
    p2 = create :post, enabled: false
    expect(p1.enabled).to eq(true)
  end
end

【问题讨论】:

  • 尝试在两个测试用例中重新加载p1expect(p1.reload.enabled).to eq(false)expect(p1.reload.enabled).to eq(true)

标签: ruby-on-rails rspec ruby-on-rails-4 rspec2 rspec-rails


【解决方案1】:
describe "#remove_enabled" do
  let!(:post) { create :post, enabled: true }

  it "should remove enabled for other post" do
    create :post, enabled: true
    expect(post.reload.enabled).to eq(false)
  end

  it "should not remove enabled for other post if current post is not enabled" do
    create :post, enabled: false
    expect(post.reload.enabled).to eq(true)
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多