2011-04-29 58 views
7

我有一個使用Jammit來結合javascript資源的rails應用程序,並且我想用Jasmine對我的javascript進行BDD式測試。我想知道是否有人有任何建議從Jasmine內部訪問Jammit生成的「pacakges」?如何有效地使用Jasmine測試通過Jammit打包的javascript資產?

問題是Jasmine是通過在磁盤上定義一個JS文件列表進行測試配置的,然後它將這些文件包含在它自己的測試運行器頁面中,該頁面被加載並在瀏覽器中運行。

我可以引用jasmine.yml配置文件中的每個單獨的JS文件,然後將它們與Jammit打包在一起......但是,Jammit已經在爲我處理文件之間的依賴關係,更重要的是,我也需要訪問Jammit生成的已編譯的javascript templates

我也可以手動運行Jammit來先生成編譯後的資產然後運行Jasmine,但是我會在每次測試運行之前手工重新生成資產以便測試更改,這會嚴重痙攣一個快速的測試驅動型工作流程。

我想知道如果我能以某種方式:

  • 從山茉莉的機架式服務器中,以便它可以從茉莉花發球出包的Jammit控制器?這基本上和Jammit在Rails的開發環境中所做的一樣。
  • 掛鉤到茉莉花莫名其妙地打包資產在測試執行之前的每一頁加載?這會變慢,但會爲我節省一步,並確保事情是最新的。

有什麼建議嗎?我剛剛開始使用這個,所以我可能會把它全部弄錯。任何建議將不勝感激。 :-)

謝謝! -John

+0

對此有何運氣?我遇到了同樣的問題 - 我很好,包括js文件,但這是JST對象的創建,會導致我死亡。 – rmw 2011-05-19 22:29:09

回答

10

這裏就是你要找的法術連擊:

  1. 使用與guard-jammit gem沿guard gem要監視更改到項目的資產
  2. 安裝在您選擇的瀏覽器的LiveReload plugin並安裝因此,只要您的規格或資產發生變化,您就可以讓瀏覽器自動重新加載。
  3. 開火後,然後耙茉莉花,然後在瀏覽器中加載你的茉莉花規格,然後按下實時重新加載按鈕連接到後臺啓動的實時重裝服務器
  4. 更改文件。當守衛運行困難並觀察您的瀏覽器刷新茉莉花規格時,觀看魔術的發生。

下面是一個例子Guardfile讓你開始:

guard 'jammit' do 
    watch(%r{public/javascripts/(.*)\.js}) 
    watch(%r{app/views/jst/(.*)\.jst}) 
    watch(%r{public/stylesheets/(.*)\.css}) 
end 

guard 'livereload', :apply_js_live => false do 
    watch(%r{app/.+\.(erb|haml)}) 
    watch(%r{app/helpers/.+\.rb}) 
    watch(%r{public/.+\.(css|js|html)}) 
    watch(%r{config/locales/.+\.yml}) 
    watch(%r{spec/javascripts/.+\.js}) 
end 
+0

這值得三倍票數。 – Levi 2011-05-27 22:52:24

3

我想出了一個合適的解決方案:強制Jammit在茉莉開始時重新加載和打包。要做到這一點,你需要編輯jasmine_config.rb文件:

require 'jammit' 
module Jasmine 
    class Config 

    Jammit.reload! 
    Jammit.package! 

    end 
end 

我寫了一點更詳細的一篇關於在這裏:​​http://www.rebeccamiller-webster.com/2011/05/jammit-jasmine-bdd/

+0

你是我的英雄! – 2012-08-23 18:22:48

相關問題