【发布时间】:2014-04-18 04:37:25
【问题描述】:
首先我是模拟/存根的新手,我在模拟/存根时遇到了麻烦
这是我的应用程序代码:
describe 'Register an User' do
VALID_USERNAME = "..."
VALID_PASSWORD = "..."
VALID_USER = User.new(VALID_USERNAME, VALID_PASSWORD)
before (:each) do
User.any_instance.stub(:save).and_return(true)
end
it 'should create a new user' do
post :create, :username => VALID_USERNAME, :password => VALID_PASSWORD
expect(response.status).to eq(201)
#user_inserted = ...
#expect(user_inserted).to eq(VALID_USER)
end
end
还有:
def create
username = params[:username]
password = params[:password]
if not username or not password
render :json => '', :status => 400
else
success = User.new(username, password).save
if success
render :json => '', :status => 201
else
render :json => '', :status => 500
end
end
end
我正在尝试模拟 ActiveRecord,以测试“创建”,而无需测试“获取”。 这里的想法是当我调用“user.save”时可以在不使用数据库的情况下保存用户,然后我会在我的测试用例中访问,所以我保证用户被“插入”到我的数据库中。
如果我运行测试,它会通过,但我不会验证我愿意做什么。有什么帮助或想法吗?
谢谢!
【问题讨论】:
-
什么是
User.new(VALID_USERNAME, VALID_PASSWORD)?new方法是您的自定义方法吗?如果是,它会返回什么?注意来自 ActiveRecord 的new接受哈希
标签: ruby-on-rails rspec mocking