我试图确保在创建用户时,“measurement_units”字段具有默认的英制字符串。当我通过创建用户进行测试时,我得到了想要的结果,但是当我使用我的规范进行测试时,我得到了`got:nil'
知道我在规范中做错了什么吗?
require 'spec_helper'
require 'cancan/matchers'
describe User do
subject(:user) { User.new(email: 'test@test.com', password: '12345678', goal_id: '1', experience_level_id: '1', gender: 'female') }
it "should be assigned measurement_units of imperial" do
user.measurement_units.should eq("imperial")
end
end
上面的测试返回:
1) User should be assigned measurement_units of imperial
Failure/Error: user.measurement_units.should eq("imperial")
expected: "imperial"
got: nil
(compared using ==)
# ./spec/models/user_spec.rb:20:in `block (2 levels) in <top (required)>'
我知道这可能是非常基本的,但我无法弄清楚。
编辑:
我在用户模型上的创建过滤器之前分配初始测量单位,如下所示:
class User < ActiveRecord::Base
before_create :assign_initial_settings
def assign_initial_settings
self.measurement_units = "imperial"
end