2014-09-02 69 views
0

我一直试图在我的狂欢应用程序中运行一些单元测试,这涉及到创建一个新的命令。由于未将种子数据输入到测试数据库中,我遇到的第一个障碍与不加载的国家有关。在这里发布了一个关于它的问题,如果你想要额外的信用工作:https://github.com/spree/spree/issues/5308狂欢和单元测试

但是,为了测试我的其他代码,我能够通过在测试中发明一个国家来绕过这个问题。我试图做同样的一个变种,但我一直运行到这个错误:

Error: 
VariantTest#test_variant_test: 
RuntimeError: No master variant found to infer price 
test/models/variant_test.rb:10:in `block in <class:VariantTest>' 

我创建了第二个测试,看看变种都拿到造出来的,我得到了相同的错误消息。这是我所运行测试:

require 'test_helper' 

class VariantTest < ActiveSupport::TestCase 
    test "variant test" do 
    f = Spree::Variant.new 
    f.cost_price = 20 
    f.sku = "test" 
    f.is_master = true 
    f.track_inventory = false 
    f.save! 

    test1 = Spree::Variant.find_by sku: "test" 
    assert_not_nil(test1, "Variant wasn't created") 
    end 
end 

我试图创建两种变体,其中一个是主,其中之一是没有了,测试SKU的非主变,但我一直获取有关主变体未找到的完全相同的错误消息。我错过了什么吗?

回答

0

只是为了回答你的问题:你需要为你的变体设置price。你会得到新的错误,因为你缺少product该变种等。

相信我,你真的想用FactoryGirl的默认工厂,你不必失去时间重新发明轮子。只要看看他们here或直接在variant factory,如果你对他们有任何疑问就问。

+0

是的,下一次我这样做,我一定会使用FactoryGirl。谢谢! – Gogglor 2014-09-19 19:48:34