Jestem nowy w pisaniu testów jednostkowych i potrzebuję pomocy w testowaniu części funkcji.Test jednostkowy z moment.js
Moja funkcja wygląda tak ...
getData() {
return this.parameters.map(p => {
return {
name: p.name,
items: p.items.map(item => {
const toTime = item.hasOwnProperty('end') ? moment.utc(item.end._d).unix() : null;
const fromTime = item.hasOwnProperty('start') ? moment.utc(item.start._d).unix() : null;
return {
id: item.id,
fromTime: fromTime,
toTime: toTime,
};
}),
};
});
}
i do tej pory mój testowy wygląda następująco (jaśmin)
describe('getData()', function() {
it('should return json data', function() {
$ctrl.parameters = [{
name: 'test',
items: [{
id: 1,
fromTime: null,
toTime: null
}, {
id: 13,
fromTime: null,
toTime: null
}]
}];
expect($ctrl.getData()).toEqual([{
name: 'test',
items: [{
id: 1,
fromTime: null,
toTime: null
}, {
id: 13,
fromTime: null,
toTime: null
}]
}]);
});
});
ten test działa/mijania, ale jak widać mam nie testuję potrójnego, jeśli/else używa Moment.js. Zasadniczo to, co robi trójskładnik, polega na sprawdzeniu, czy elementy zawierają właściwość o nazwie start
/end
, a jeśli tak, skonwertuj tę wartość na znacznik czasu epoki/unix i przypisz ją do toTime
lub fromTime
. Jeśli więc elementy mają właściwość o nazwie koniec z wartością 'Sat Oct 31 2015 00:00:00 GMT+0000 (GMT)'
, to zostanie ona przekształcona na '1446249600'
i przypisana do toTime
Mam nadzieję, że to wyjaśnia! Nie jestem pewien, jak napisać test na ten temat i byłbym wdzięczny za każdą pomoc/sugestie.
Dziękujemy! To działa. I dzięki za próbkę! –