У меня есть файл index.js, который реализует помощник forEach следующим образом:
var images = [
{ height: 10, width: 30 },
{ height: 20, width: 90 },
{ height: 54, width: 32 }
];
var areas = [];
images.forEach(function(image) {
return areas.push(image.height * image.width);
});
console.info(areas);
module.exports = images;
Я знаю, что решение работает, вы знаете, что решение работает, оно работает.
Затем внутри моего файла test.js:
const chai = require("chai");
const images = require("./index.js");
const expect = chai.expect;
describe("areas", () => {
it("contains values", () => {
expect([]).equal([300, 1800, 1728]);
});
});
Когда я запускаю npm test, я продолжаю получать AssertionError.
Я включу файл package.json:
{
"name": "my_tests",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"keywords": [],
"license": "MIT",
"dependencies": {
"chai": "4.2.0",
"mocha": "6.0.2"
}
}
Я реорганизовал свой файл test.js следующим образом:
const chai = require("chai");
const areas = require("./index.js");
const expect = chai.expect;
describe("areas", () => {
it("contains values", () => {
const areas = [];
expect(areas).equal([300, 1800, 1728]);
});
});
Все еще получаю AssertionError:
AssertionError: expected [] to equal [ 300, 1800, 1728 ]
+ expected - actual
-[]
+[
+ 300
+ 1800
+ 1728
+]
@JackBashford, areas выводит [300, 1800, 1728], поэтому, когда я говорю expect([]).equal([300, 1800, 1728]);, это должно быть прохождение.
Но areas нигде нет в вашем test файле — вы экспортируете images из index, а не areas.
@JackBashford, я тоже пробовал, но все равно получаю AssertionError.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ошибка связана с используемым вами методом Chai. Чай.равный выполняет сравнение идентичности между двумя массивами (===). Поскольку два массива не являются одним и тем же точным объектом в памяти, он всегда будет терпеть неудачу, даже если содержимое одинаково. Вам нужен Чай.eql, который выполняет глубокое сравнение всех значений.
expect([1,2,3]).equal([1,2,3]) // AssertionError
expect([1,2,3]).eql([1,2,3]) // true
Тейлор, ваши рассуждения имеют смысл, но я все равно получаю AssertionError, даже если я меняю equal на eql. Я говорю, что пустой массив должен равняться [300, 1800, 1728], как только forEach исчерпает себя.
Проблема в том, что у test.js нет доступа к переменной areas. Он объявлен внутри index.js и не экспортируется. Вы также сравниваете буквальный пустой массив [] с непустым массивом. Вы должны экспортировать areas, а затем изменить [] на areas после того, как вы изменили const images на const areas.
В чем собственно ошибка? Вы имеете в виду экспортировать
areas, а неimages?