Ich habe ein Programm, in dem ein Benutzer einen "Piep" posten kann, zusammen mit einem Zeitstempel. Wie kann ich dies mit Capybara testen? Das Problem ist, dass jedes Mal, wenn ein neuer Zeitstrahl erstellt wird, die Zeit unterschiedlich ist. Müsste ich in Capybara eine Art Stub/Mock machen? Hilfe würde sehr geschätzt werden. Vielen Dank.Wie testet man Zeitstempel mit Capybara?
class Peep
include DataMapper::Resource
property :id, Serial
property :title, String
property :text, String
property :created_at, DateTime
end
DataMapper.setup(:default, "postgres://localhost/chitter_#{ENV['RACK_ENV']}")
DataMapper.finalize
DataMapper.auto_upgrade!
App.rb:
require 'data_mapper'
require 'sinatra/base'
require 'sinatra/flash'
require_relative './models/peep.rb'
require_relative './models/user.rb'
ENV["RACK_ENV"] ||= "development"
class Chitter < Sinatra::Base
enable :sessions
register Sinatra::Flash
set :session_secret, 'super secret'
get '/' do
'You arrived at the homepage'
end
get '/peeps' do
@peeps = Peep.all
erb(:index)
end
get '/peeps/new' do
erb(:new)
end
get '/users/new' do
@user = User.new
erb(:'users/new')
end
post '/users' do
@user = User.create(email: params[:email],
password: params[:password],
password_confirmation: params[:password_confirmation])
if @user.save
session[:user_id] = @user.id
redirect to('/peeps')
else
flash.now[:errors] = @user.errors.full_messages
erb(:'users/new')
end
end
post '/peeps' do
peep = Peep.new(title: params[:title], text: params[:text])
peep.save
redirect to('/peeps')
end
helpers do
def current_user
@current_user ||= User.get(session[:user_id])
end
end
run! if app_file == $PROGRAM_NAME
end
Aufrufe:
<h1> Peeps </h1>
<ul id='peeps'>
<% @peeps.reverse.each do |peep| %>
<li id="peeps">
Title: <%= peep.title %>
Text: <%= peep.text %>
created_at: <%= peep.created_at %>
</li>
<% end %>
</ul>
Was genau möchten Sie testen? Wie hast du es versucht? Welches Problem holst du? –