2017-09-18 3 views
0

Supposons que j'ai deux tableaux similaires, comment puis-je écrire unittest pour vérifier si ces tableaux ont les mêmes valeurs. Et ces valeurs sont égales. J'utilise du moka et de l'enzyme pour les tests unitaires. Quelle est la meilleure façon de comparer cette valeur?Comparer deux tableaux d'objet à sa valeur, test unitaire

const devices = [{ 
     deviceType: 'Tag', 
     deviceId: 1, 
     name: 'Tag For Sending and alarm', 
     version: '', 
     location: 'Room1', 
     lastAliveMessage: '', 
     deviceStatus: 'Active', 
     actions: 'offline', 

    },{ 
     deviceType: 'Tag1', 
     deviceId: 2, 
     name: 'Tag For Sending and alarm2 ', 
     version: '', 
     location: 'Room2', 
     lastAliveMessage: '', 
     deviceStatus: 'Active', 
     actions: 'offline', 
    }] 

const devices2 = [{ 
     deviceType: 'Tag', 
     deviceId: 1, 
     name: 'Tag For Sending and alarm', 
     version: '', 
     location: 'Room1', 
     lastAliveMessage: '', 
     deviceStatus: 'Active', 
     actions: 'offline', 

    },{ 
     deviceType: 'Tag1', 
     deviceId: 2, 
     name: 'Tag For Sending and alarm2 ', 
     version: '', 
     location: 'Room2', 
     lastAliveMessage: '', 
     deviceStatus: 'Active', 
     actions: 'offline', 
    }] 

data.forEach(item => { 
       devices.forEach(device =>{ 
item.deviceId.should.be.equal(device.deviceId)) 
       }) 
      }) 
+0

Je voudrais utiliser la fonction 'isEqual' de la bibliothèque [lodash] (https://lodash.com/docs/4.17.4#isEqual). L'égalité est un peu difficile en javascript, donc si vous n'avez pas envie de prendre cette bête je m'en tiendrai à [lodash] (https://lodash.com/docs/4.17.4#isEqual) ou [underscore] (http : //underscorejs.org/#isEqual). – Olian04

+0

Vous pouvez écrire votre propre fonction ou vous pouvez utiliser des dizaines de bibliothèques d'assertions déjà existantes que vous pouvez utiliser avec Mocha. Ou vous pouvez utiliser, comme suggéré dans le commentaire précédent, quelque chose comme lodash qui aiderait à réduire le travail nécessaire pour écrire du code personnalisé. Ce qui est le mieux varie d'une situation à l'autre et la situation que vous décrivez dans votre question n'est pas particulièrement distinctive. Toutes les options que j'ai mentionnées sont * a priori * bien. – Louis

Répondre

0
devices.forEach((device, index) => { 
    data[index].deviceType.props.children.should.be.equal(device.deviceType) 
    data[index].deviceId.props.children.should.be.equal(device.deviceId) 
     })