문제
나는있다 오이 테이블, 필드 중 하나는 오늘날 날짜로 채워지고 싶은 날짜입니다. 오늘 날짜가 테이블에 들어 가지 않고이 작업을 수행하는 방법이 있습니까?
기본적으로 입력하고 싶습니다 Time.now.strftime("%Y-%m-%d")
테이블에 들어가서 깨지지 않습니다.
해결책
테이블이 단계 정의에 의해 처리되고 있으므로 "Todays_Date"문자열과 같은 테이블에 특별한 장소 홀더를 넣은 다음 사용 할 수 있습니다. map_column!
열에서 데이터를 원하는 형식으로 처리합니다.
예를 들어 다음 표가 주어졌습니다
Given the following user records
| username | date |
| alice | 2001-01-01 |
| bob | TODAYS_DATE |
당신의 단계 정의에서 당신은 가질 것입니다
Given /^the following user records$/ do |table|
table.map_column!('date') do |date|
if date == 'TODAYS_DATE'
date = Time.now.strftime("%Y-%m-%d")
end
date
end
table.hashes.each do |hash|
#Whatever you need to do
end
end
해시를 요청할 때만 값이 변경됩니다. 테이블 및 테이블 .raw는 동일하게 유지되지만 행 해시가 필요할 때마다 MAP_COLUMN 내의 코드로 변환됩니다!
다른 팁
이 질문이 질문을받은 이래로 나이가 많았지 만 최근 오이와 비슷한 일을하고 있었으므로 여기에 누군가가 관심이 있다면 대체 솔루션이 있습니다 ...
Given the following user records
| username | date |
| bob | Time.now.strftime("%Y-%m-%d") |
그리고 계단 정의에서 eval () 날짜 문자열
Given /^the following user records$/ do |table|
table.hashes.each do |hash|
date = eval(hash["date"])
end
end
Brandon의 예와 달리 이것은 추가 논리 없이도 정확한 날짜를 가질 수 없습니다.
Bodnarbm의 대답은 그것이 당신이하고 싶은 일이라면 꽤 좋습니다. 내 자신의 제안은 Timecop 보석. 이를 사용하여 알려진 날로 시간을 설정 한 다음 그에 따라 테이블을 조정하십시오.
비품 파일을 기반 으로이 코드를 만들었습니다.
특징:
Given the following "Inquirers":
| id | email | start_date |
| 1 | alberto@deco.proteste.pt | <%= Time.now %> |
돕는 사람:
Given(/^the following "(.*?)":$/) do |model, table|
table.hashes.each do |hash|
attributes = Rack::Utils.parse_nested_query(hash.to_query)
object = model_name.classify.constantize.new
attributes.keys.each do |key|
object.send("#{key}=", ERB.new(value).result())
end
...
end
end
제휴하지 않습니다 StackOverflow