2015-01-15 13 views
6

Ruby'de binding.pry gibi bir şeye sahip olmak isterdim, temel olarak, koduma bir satır ekleyebilmek ve bir hata ayıklayıcısını durdurmak istiyorum. benim açısal/yasemin sonuç şöyle olurAçısal/yasemin/karma için REPL aracı

it('runs my jasmine test', function() { 
    var a = true; 
    binding.pry // stops code and enters REPL prompt 
    expect(a).toBe(true); 
}); 

test eden istemi Ben zaman içinde bu noktada, bu kapsamda mevcut değişkenlere şeyler yapabilir

#

# a = false;

Sonra çıkıp çalışmaya devam edebilirim.

# exit

Sadece dev araçlarıyla ayıklama gibi

, ama karma süreci kapsamında bu tarayıcı ortamında dışını ve terminal içindeki istiyorum. Ayrıca https://github.com/alidavut/locus da buldum, ancak karma olarak çalışmıyor gibi görünüyor.

debugger; 

hata ayıklamak istediğiniz noktada:

cevap

3

Yazdığım karma işleminde yılında REPL başlatmak için herhangi bir şekilde farkında değilim, ama ne yapabilirim basitçe. Daha sonra, tarayıcınızın dev araçlarına sahipseniz, bu satır yürütüldüğünde zaten'u açın, yürütme duraklar ve sizin için yeterli olabilecek "izleme ifadelerini" kullanabilirsiniz. Çağrı yığınına ve tüm yerel değişkenlere erişebilirsiniz. Ayrıca, bir saat ifadesinde yerel değişkenlere atayabilir ve yürütmeyi sürdürdüğünüzde yeni değerler kalıcı olacaktır.

Bunu yalnızca Chrome'da denedim. Ne yapmak zorunda olduğunu:

  1. yılında debugger; deyimi koyun
  2. Başlat karma..
  3. Chrome dev araçlarını açın.
  4. İzlenen karma dosyalardan birini kaydedin (şimdi testler, zaten açık olan dev araçlar ile tekrar çalışacaktır).
  5. Kar! Tüm test kodu tarayıcıda yürütüldüğünde olarak karma tarafında bir repl yapma

çok daha fazla çaba gerektirecektir. Bir REPL'yi karma işlemden kontrol etmek için, karma, tarayıcıyla konuşmak için ayarladığı yuvalarla iletişim kurmak için olayları ayarlamanız gerekir. Eğer bu kadar eğilimli olsanız da yapmalısınız.DÜZENLEME: aslında, bunu yapmak için hala belirli bir deyimde Javascript blok yürütme yapmak mümkün olması gerekir, ve ben bunu yapmak için tek yolu debugger; eminim.

+0

Ne yazık ki hata ayıklayıcı, komut satırında çalışmaz. PhantomJS ile çalışmıyor. NodeJS/gulp/diğer komut satırı tabanlı javascript şeyler altında çalışmaz. – Cosmin

+0

"--remote-debugger" ile PhantomJS'yi başlatmayı denediniz mi? http://phantomjs.org/troubleshooting.html –