Mam test RSpec dla klasy w /lib/classes
, która potrzebuje dostępu do pliku zip (bez przesyłania). Plik jest przechowywany w /spec/fixtures/files/test.zip
. Jak wprowadzić prawidłową ścieżkę, tak aby jej środowisko było agnostyczne, tj. Bez bezwzględnej ścieżki?względna ścieżka pliku w RSpec
Odpowiedz
Z tego, co wiem (patrząc co miesiąc lub dwa), nie ma lepszego sposobu na budowanie czegoś w spec_helper
, które używa wartości __FILE__
, aby pobrać ścieżkę do znanego fragmentu treści, a następnie zbudować własne pomocniki na wierzchu tego.
Oczywiście można również użyć ścieżki w stosunku do __FILE__
w indywidualnym pliku *_spec.rb
.
Rails.root
daje root aplikacji, więc
Rails.root.join "spec/fixtures/files/test.zip"
daje bezwzględną ścieżkę do pliku, agnostycznego od miejsca aplikacji na dysku twardym.
Dzięki rspec-rails można uzyskać dostęp do urządzeń łatwiejszych, jak opisano tutaj: https://www.relishapp.com/rspec/rspec-rails/v/3-5/docs/file-fixture – thisismydesign
mam rozwiązać ten problem niedawno i oto co wymyśliłem:
Definiowanie stałym Twój spec_helper.rb
(lub odpowiednik), wskazując na RSpec root:
RSPEC_ROOT = File.dirname __FILE__
użyć tej zmiennej w swojej *_spec.rb
(lub odpowiednik) pliki testowe:
require 'spec_helper'
File.open("#{RSPEC_ROOT}/resources/example_data.json")
Dlaczego to rozwiązanie?
- To nie skorzystać z lokalizacji pliku testowego, który może być ulec zmianie (spec_helper prawdopodobnie nie)
- To nie wymaga żadnych uzupełnień do testowania pliki inne niż już istniejące
require 'spec_helper'
- To nie zależy on Rails (w przeciwieństwie
Rails.root
)
Oto Streszczenie: https://gist.github.com/thisismydesign/9dc142f89b82a07e413a45a5d2983b07
- 1. Ścieżka względna w pliku Context.xml
- 2. Java względna ścieżka pliku tekstowego w głównej?
- 3. ASP.NET Względna ścieżka do pliku w Web.Config
- 4. względna ścieżka skryptu BAT
- 5. log4j względna ścieżka
- 6. Względna ścieżka WiX do pliku źródłowego
- 7. PHP - względna ścieżka "wymaga"
- 8. ścieżka względna dla pliku bazy danych w pliku konfiguracyjnym
- 9. Względna ścieżka zapisu systemu plików w module
- 10. Względna ścieżka do odwołania w WebConfig.ConnectionString
- 11. Nagłówek Lokalizacja względna ścieżka kompatybilności
- 12. Względna ścieżka przy użyciu Uri
- 13. Względna ścieżka, ale w przypadku portu?
- 14. Ustawienia Inno - względna ścieżka do ReadIni
- 15. Względna ścieżka z komentarzem #pragma (lib)
- 16. Sprawdź, czy ścieżka jest bezwzględna lub względna.
- 17. Szyny: ścieżka pliku
- 18. Ścieżka względna odniesienia dla programu Visual Studio
- 19. ścieżka względna nie działa ze ścieżkami
- 20. Względna ścieżka wirtualna "" nie jest tutaj dozwolona.
- 21. Jak sprawdzić, czy ścieżka jest względna lub bezwzględna w java
- 22. Względna ścieżka w definicji zewnętrznych Subversion nie działa dla mnie!
- 23. Względna ścieżka od adresu głównego operatora ("~") w kodzie za
- 24. ASP MVC Przyjazne adresy URL i względna ścieżka Obrazy
- 25. ścieżka pliku w hdfs
- 26. Ścieżka względna na stronie wzorcowej dla znacznika img
- 27. ścieżka względna nie działa nawet z __init__.py
- 28. Python: Compute względna ścieżka z jednego katalogu do innego
- 29. Win32 API do określania, czy ścieżka jest względna czy absolutna?
- 30. Ścieżka pliku analizy pliku JSON
Dla innych z tym samym problemem: Ponieważ moja specyfikacja znajduje się w/spec/classes, skończyło się na: 'File.dirname (__ FILE__) + '/../ fixtures/files/test.zip'' – wintersolutions
Działa to dobrze, ale to może być trochę kruchy na wypadek, gdybyś zmienił swoje specyfikacje. Oczywiście nie należy zakładać, że używasz Railsów, ale jeśli masz dostęp do katalogu głównego projektu (Rails.root, Sinatra :: Application.root), może to być - lub nie - być bardziej stabilną alternatywą. – lab419
, aby działało to na różnych platformach, nie umieszczaj w łańcuchu znaków "/", zamiast tego użyj: File.join (File.dirname (__ FILE__), "..", "urządzenia", "pliki", "test". zip ") – Ultrasaurus