2016-08-09 2 views
5

내 레일 애플리케이션에서 일부 Ruby 코드를 기반으로 동적으로 설정된 변수가있는 .js.erb 파일이 있습니다.RSpec 자동화 테스트 중에 스프로킷 캐시 무효화

응용 프로그램이 정상적으로 작동하지만 일부 자동화 된 테스트에서 문제가 있습니다. 이 JavaScript로 작동하는 RSpec 기능 테스트에서 문제가 발생합니다. 내 사양 파일에는 다른 시나리오를 테스트하기 위해 ruby를 MyApp.config.timeout_time 시간으로 변경하는 여러 가지 테스트가 있습니다. 내 사양 파일에서 첫 번째 예제는 성공하고 나머지는 실패합니다.

myTimer이 자바 스크립트 측면에서 업데이트되지 않기 때문에 마침내 실현되었습니다. 첫 번째 테스트가 실행되면 Ruby에서 설정된대로 현재 값을 사용하여 JavaScript가 컴파일됩니다. 두 번째 테스트를 위해 Ruby 타이머를 변경하면 RSpec은 여전히 ​​자바 스크립트에서 이전 값을 사용하고 있습니다.

Sprockets/Rails가 파일이나 캐시의 일부를 무효화하여 자바 스크립트를 다시 작성하도록 지시하는 방법이 있습니까? 일반적으로 캐싱을 해제하고 싶지는 않습니다. 필요할 때마다 application.js를 무효화 할 방법이 필요합니다.

파일 시스템의 JavaScript 파일 중 하나를 "만져서"스프로킷이 파일이 변경되었다고 생각할 수 있지만 실제로 그렇게하고 싶지는 않습니다.

답변

1

나는 당신이 요구 한 것을하는 방법을 모른다. 그러나 myTimer을 특정 값이되어야하는 기능 사양에 포함시키려는 값으로 설정할 것을 고려할 수 있습니다.

당신이 카피 바라를 사용하는 가정하면, 당신은 스크립트를 변경할 수있는 myTimer 어딘가에 넣어 먼저 자바 스크립트를 조금 재 배열해야 할 수도 있습니다

page.execute_script('// some Javascript') 

과 기능 사양에 자바 스크립트를 실행할 수 있습니다.

+0

감사합니다. 좋은 생각입니다. 나는 그것을 줄 것이다. – CodeSmith

+0

행운이 있었나요? –

+0

아직 확실하지 않습니다. 다른 문제를 지원하도록 리디렉션되었지만 아직 시도 할 기회가 없습니다. 일단 내가 더 많이 알게되면 나는 갱신 할 것이다. – CodeSmith