在 rails 模型中对总和进行单元测试
unit testing a sum in rails model
我想创建一个测试来测试我的方法是否正常工作。
吨位是在我提交的模型里面算出来的,保存在那边。我的比赛视图中也需要该功能,这就是为什么我也将其包含在比赛模型中(这正确吗?)。
class Contest < ActiveRecord::Base
has_many :submissions
def tonnage
self.submissions.sum(:tonnage)
end
end
当我测试(最小测试)时出现以下错误:
FAIL["test_0003_must have tonnage", #<Class:0x007fbcb9fac260>, 2015-09-29 21:23:47 +0200]
test_0003_must have tonnage#Contest (1443554627.17s)
--- expected
+++ actual
@@ -1 +1 @@
-440
+#<BigDecimal:7fbcbc9ac150,'0.0',9(27)>
test/models/contest_test.rb:17:in `block (2 levels) in <top (required)>'
我的测试看起来像这样(最小测试):
describe Contest do
let(:contest) { Contest.create(name: "test",
admin_id: 1,) }
it "must have tonnage" do
contest.tonnage.must_equal 440
end
end
测试输出是什么意思(失败)?对其进行单元测试的正确方法是什么?我假设我的模型中的方法是正确的,因为它正在运行。
感谢下面的评论,我发现我指的是错误的比赛。以下是正确的测试:
describe Contest do
let (:default) { contests :default }
it "must have tonnage" do
default.tonnage.must_equal 440
end
end
您的测试显示
-440
+#<BigDecimal:7fbcbc9ac150,'0.0',9(27)>
意味着您期望 440
(如您的测试断言),但您得到了一个值为 0.0
的 BigDecimal 对象。可能是因为这是具有 0.0
默认值的数据库列类型。
我的问题:sum
消息汇总是什么?它是一个名为 tonnage
的专栏吗?因为我在你的模型中看不到这一点。它是一个名为 tonnage
的列吗?你求和的逻辑不正确。
我想创建一个测试来测试我的方法是否正常工作。
吨位是在我提交的模型里面算出来的,保存在那边。我的比赛视图中也需要该功能,这就是为什么我也将其包含在比赛模型中(这正确吗?)。
class Contest < ActiveRecord::Base
has_many :submissions
def tonnage
self.submissions.sum(:tonnage)
end
end
当我测试(最小测试)时出现以下错误:
FAIL["test_0003_must have tonnage", #<Class:0x007fbcb9fac260>, 2015-09-29 21:23:47 +0200]
test_0003_must have tonnage#Contest (1443554627.17s)
--- expected
+++ actual
@@ -1 +1 @@
-440
+#<BigDecimal:7fbcbc9ac150,'0.0',9(27)>
test/models/contest_test.rb:17:in `block (2 levels) in <top (required)>'
我的测试看起来像这样(最小测试):
describe Contest do
let(:contest) { Contest.create(name: "test",
admin_id: 1,) }
it "must have tonnage" do
contest.tonnage.must_equal 440
end
end
测试输出是什么意思(失败)?对其进行单元测试的正确方法是什么?我假设我的模型中的方法是正确的,因为它正在运行。
感谢下面的评论,我发现我指的是错误的比赛。以下是正确的测试:
describe Contest do
let (:default) { contests :default }
it "must have tonnage" do
default.tonnage.must_equal 440
end
end
您的测试显示
-440
+#<BigDecimal:7fbcbc9ac150,'0.0',9(27)>
意味着您期望 440
(如您的测试断言),但您得到了一个值为 0.0
的 BigDecimal 对象。可能是因为这是具有 0.0
默认值的数据库列类型。
我的问题:sum
消息汇总是什么?它是一个名为 tonnage
的专栏吗?因为我在你的模型中看不到这一点。它是一个名为 tonnage
的列吗?你求和的逻辑不正确。