Fel*_*cil 5 rspec ruby-on-rails mocking
首先,我是模拟/存根的新手,我在模拟/存根时遇到了麻烦
这是我的应用程序代码:
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
Run Code Online (Sandbox Code Playgroud)
和:
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
Run Code Online (Sandbox Code Playgroud)
我正在尝试模拟ActiveRecord,测试'create',而不需要测试'get'.这里的想法是当我调用'user.save'可以保存用户而不使用数据库,然后我会在我的测试用例中访问,所以我保证用户'插入'在我的数据库上.
如果我进行测试,它会通过,但我不会验证我愿意做什么.任何帮助或想法?
谢谢!
这是没有意义的,因为您无法在不插入数据库的情况下测试数据库中的插入。为什么?
Rails 附带内置验证,这是保存项目的第一步。如果验证通过,则该项目将通过 ActiveRecord 插入数据库中。数据库验证从此步骤开始,如果任何失败,它们都会引发异常。
所以。如果您想测试是否可以在数据库中创建用户,请将验证添加到与数据库匹配的模型中。然后你就可以使用该方法is_valid?
。
这将确保您的用户可以有效地存储在数据库中。因此,您将能够在任何地方使用它,并且知道:user_instance.is_valid?
定义可插入项目。
我希望这就是你所问的。
归档时间: |
|
查看次数: |
421 次 |
最近记录: |