Mam projekt marionetek, podobny do konfiguracji opisanej w http://www.backbonerails.com/ Używam Rails, Coffeescript i Jasmine/Sinon dla specyfikacji.Testowanie modułów marionetek w izolacji z Jasmine
Mam problemy z testowaniem modułów w izolacji. Jednym z przykładów jest router:
@MyApp.module "DashboardApp", (DashboardApp, App, Backbone, Marionette, $, _) ->
class DashboardApp.Router extends Marionette.AppRouter
appRoutes:
"dashboard" : "showDashboard"
API =
showDashboard: ->
DashboardApp.Show.Controller.showDashboard()
App.addInitializer ->
new DashboardApp.Router
controller: API
nie jestem pewien, jak to sprawdzić w oderwaniu od aplikacji (window.MyApp). Chciałbym w zasadzie wyzwolić trasę "# board" i upewnić się, że wywoływana jest showDashboard, bez konieczności udziału w niej całej aplikacji. Używamy potoku zasobów Railsów (więc nie ma RequireJS), więc wszystkie pliki JS są ładowane przy starcie. To, co moim zdaniem działałoby dobrze, to jakoś sfałszować obiekt aplikacji wykorzystywany w tym module, ale jestem otwarty na każde rozwiązanie.
Drugi problem mam podobnie testuje Marionette poleceń i reqres, na przykład w widoku mam
App.execute("navigate:root")
Znowu problemem jest to, że nie chcę mieć prawdziwą aplikację wziąć udział w spec, chcę np zrób nową Marionetkę. Zastosuj tylko dla spec. Widok jest w module, który jest zdefiniowany w taki sam sposób, jak pokazano w pierwszym przykładzie kodu.
Zasadniczo chcę uniknąć używania prawdziwej aplikacji w specyfikacjach i użyć albo makiety albo (prawdopodobnie lepiej/łatwiej) tylko nowej marionetki. Aplikacja. Byłoby to dla mnie użyteczne we wszystkich przypadkach, gdy rzeczy przechodzą przez obiekt aplikacji, na przykład rzeczy w Wreqr, inicjalizatory dla routerów itp.