5

JavaScript Tek Sayfa Uygulamam için birim testleri ve uçtan uca testler düzenlemem gerekiyor. Birim testleri için e2e testi ve Chai için AngularJS İletki/Salatalık kullanıyorum.AngularJS'de birim testleri ve e2e testleri nasıl düzenlenir?

İki farklı klasörde (unit ve e2e klasöründe) e2e ve birim sınamaları var ve şu anda page object tasarım patentinden yararlanamıyorum. Dosyalar yapılandırılmamış ve çok fazla kod paylaşmıyor, bu yüzden kendimi defalarca tekrarlıyorum.

Ben bu yaklaşım

kod en az miktarda yazma şekilde testlerini yeniden düzenlemek için en iyi yöntem test kodu KURU tutarak var mıdır büyütmek değil tanımak? Her şeyden

cevap

6

Öncelikle kesinlikle Sayfa Nesne deseni kullanmaya geçiş ve ayrı dizin altında sayfanızın nesneleri tutmalı - Ben dizini po aramak için tavsiye düşünüyorum. İşte

sizin için bir örnek, proje yapısı şu anda var:

$ cd e2e 
$ tree -L 1 
. 
├── config 
├── db 
├── helpers 
├── mocks 
├── po 
└── specs 

config bizim protractor yapılandırmaları tutmak özel dizindir - Birden yapılandırmaları olabilir - örneğin, yerel testleri için ve için test, . Temel olarak "libs"/"utils" dizinimiz

helpers'dur. Özel yasemin eşleştiricilerini, yardımcı işlevlere sahip ek "yardımcı" modülleri tutuyoruz. Ayrıca, window.localStorage ve window.sessionStorage nesnelerine uygun sargılar olan localStorage ve sessionStorage modüllerine sahibiz.

mocks, protractor-http-mock mocks'u sakladığımız bir dizindir.

po, Sayfa Nesnelerinin tanımlandığı bir dizindir. Her Sayfa Nesnesi ayrı bir dosyada. Tüm özelliklerin nerede yaşadığı - bunlar alt dizinlere mantıksal olarak düzenlenir.

Ayrıca
onPrepare: function() { 
    global.helpers = require("../helpers/helpers.js"); 
    // ... 
}, 

, yardımcıları ve po ithalat daha da kolaylaştıracaktır ve ağaç dizinleri yukarı traversing önlemek ve daha iyi içeliğiyle işlemek için için:


helpers kütüphanelerin bazıları made globally available via global örnektir biz requirePO ve @Michael Radionov önerdiği requireHelper yardımcı işlevini kullanarak geçiş yaptıktan bkz:

Ayrıca, her Sayfa Nesnesinden bir düğüm paketi oluşturmak için @finspin tarafından önerilen fikri çok beğeniyorum.

+0

Sayfa Nesnesi örneğiniz var mı? –

+0

@GianlucaGhettini yup, temelde burada önerilenleri takip ediyoruz: https://github.com/angular/protractor/blob/master/docs/page-objects.md. – alecxe

+0

Birim testleri için sayfa nesneleri gibi bir şey olması mantıklı mıdır? – ganqqwerty