2014-07-10 8 views
9


Przeprowadziłem renowację kontrolerów, wprowadzając modele żądania i odpowiedzi, aby wykonać niektóre działania związane z kontrolerami po tym presentation. Zapakowałem wszystkie modele odpowiedzi i żądania z modułami odpowiednio: Odpowiedzi i Wnioski. Aplikacje działają perfekcyjnie, ale po uruchomieniu testów pojawia się błąd poniżej.RuntimeError: Wykryto zależność kołową przy automatycznym ładowaniu automatycznym

Failure/Error: Unable to find matching line from backtrace 
RuntimeError: 
Circular dependency detected while autoloading constant Responses::FolderContentResponse 

Moja struktura katalogów jest następująca:
  - APP/
    - Modele/
        - ODPOWIEDZI/

Note: Widziałem pytania związane z tym problemem, ale ich problemy nie wydawały się podobne do moich. W moim przypadku dzieje się to losowo, i tylko podczas wykonywania testów (RAILS TEST ENV), aplikacja działa idealnie.

module Responses 
    class ContentResponse 
    include ActiveAttr::Model 
    #some attributes 
    #some methods 
    end 
end 

module Responses 
class FolderContentResponse < ContentResponse 
end 
end 

Klasa reakcji FolderContent dziedziczy ContentResponse które ma bardziej ogólne metody że FolderContent inne zawartość odpowiedzi użyciu.

+0

można zapewnić minimalny przykład (np plik folder_content_response.rb, ze wszystkiego, co nie ma wpływu na błąd zdjęta)? –

+0

@Fredrich folder_content_response.rb to tylko stara klasa ruby ​​ Z kilkoma metodami. Nie sądzę, aby implementacja w tej klasie miała coś wspólnego z tym, dlaczego nie jest ona ładowana automatycznie. Więcej tylko podczas uruchamiania testów. Poddałem edycji pytanie z odrobiną kodu klasy –

+0

Howabout content_response.rb? czy istnieje jakiś kod nie w definicjach metod (tj. który działa, gdy klasa jest ładowana)? –

Odpowiedz

13

To brzmi trochę jak issue znalezione ostatnio przez Xaviera Noria. W skrócie, capybara uruchamia twoją aplikację w trybie wielowątkowym do testu, chociaż ustawienie ładowania całego kodu aplikacji z góry nie jest aktywne (potrzebne, ponieważ require i przyjaciele nie są zabezpieczeni wątkami)

Zostało to naprawione dla szyn 4.2, wcześniej wersje

config.allow_concurrency = false 

w test.rb powinno wystarczyć

Powiązane problemy