Утверждать массивы, используя Чай (или Должен) в Javascript ES6 (используя Вавилон)
Я пытаюсь проверить массив, например:
let projects = [
{
"id": "55a75be01fa2c7ff76a2ce7a",
"title: "Only-Ben",
"other_keys": "that can contain objects or arrays"
},
{
"id": "55a75be01fa2c7ff76a2ce7d",
"title: "Only-Thomas"
},
{
"id": "55a75be01fa2c7ff76a2ce7c",
"title: "Other-Project"
}
];
Цель состоит в том, чтобы проверить, что массив
Содержит элемент, который имеет ключ{title: 'Only Ben'}
Не содержат элемент с ключом{title: 'Only Thomas'}
Я сейчас пользуюсьchai.js, а такжечай вещи с этим тестом:
projects.should.include.something.that.deep.have.property('title', 'Only Thomas');
Это моеответ об ошибке:
Uncaught TypeError: Cannot read property 'something' of undefined
Просто чтобы прояснить ситуацию, я попытался запустить пример, приведенный в документации Chai Things:
[{ a: 'cat' }, { a: 'dog' }].should.include.something.that.deep.equals({ a: 'cat' })
И я все еще получаю похожий ответ об ошибке:
Uncaught TypeError: Cannot read property 'something' of undefined
Мне кажется, что проблема может быть вызвана использованиемгалдеж, Мой проект Node интенсивно использует синтаксис ES6, поэтому я использую Babel. Чтобы выполнить тесты мокко с babel, я использую babel-hook:
(in package.json)
{
"scripts": {
"test": "./node_modules/.bin/mocha --require babelhook --reporter spec",
}
}
Как я могу исправить эту неопределенную ошибку при утверждении массивов?
== EDIT ==
Я сделал 2 теста (с и без Babel), чтобы подтвердить, что Babel является проблемой в этом сценарии. Вот они:
1. Тест без бабел
var chai = require("chai");
chai.should();
chai.use(require('chai-things'));
describe('Array', function() {
it('Test array', function(cb){
[{ a: 'cat' }, { a: 'dog' }].should.include.something.that.deep.equals({ a: 'cat' })
cb();
});
});
Результат:Тест проходят
2. Тест с Вавилоном
import chai from 'chai';
let should = chai.should;
let expect = chai.expect;
import chai_things from 'chai-things';
chai.use(chai_things);
describe('Array', function() {
it('Test array', function(cb){
[{ a: 'cat' }, { a: 'dog' }].should.include.something.that.deep.equals({ a: 'cat' })
cb();
});
});
Результат:ошибка: TypeError: Cannot read property 'something' of undefined