문제

나는있다 오이 테이블, 필드 중 하나는 오늘날 날짜로 채워지고 싶은 날짜입니다. 오늘 날짜가 테이블에 들어 가지 않고이 작업을 수행하는 방법이 있습니까?

기본적으로 입력하고 싶습니다 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top