Rspec 测试效果不佳

Rspec test doesn't work well

我想做什么

我想检查包含一些更改控制器数据库的过程的操作是否成功。

错误

"no save" F

失败:

1) BuysController 检查#new 的行为 return 完成 Failure/Error: 期望(buy.trading_status).to eq("done")

   expected: "done"
        got: "pending"

   (compared using ==)
 # ./spec/controllers/buys_controller_spec.rb:27:in `block (3 levels) in <top (required)>'

在 0.14739 秒内完成(文件加载用时 3.68 秒) 1 个例子,1 个失败

失败的例子:

rspec ./spec/controllers/buys_controller_spec.rb:6 # BuysController 检查#new 的行为 return 完成

代码

require 'rails_helper'
include BuysHelper

 RSpec.describe BuysController, type: :controller do
      describe "check #new's behavior" do
       it "return done" do
        User.create(name:"hhhvv",email:"gggjggg@gmail.com")
       p User.find(1)
       Currency.create(name:"hello",user_id:1)
       Sell.create(
           id:1,
          user_id: 1,
         currency_id:1,
          amount:100,
          price:100,
         trading_status:"pending")
       buy = Buy.new(
           id:1,
           user_id: 1,
           currency_id:1,
           amount:100,
           price:100,
          trading_status:"pending"
          )
      if buy.save
          market_checker
       else
          p "no save"
        end
        expect(buy.trading_status).to eq("done")
     end
    end
 end

我试过的

  rake db:test:prepare 
  rake db:migrate RAILS_ENV=test

您可能还想检查错误。

expect(buy.errors).to be_empty