AVA 单元测试未通过 Javascript 测试规范
AVA unit tests fails passed Javascript test specs
我目前正在使用带有 .mjs
扩展的 ES6 模块并为某些功能创建测试用例。
我选择 AVA
因为它支持这种扩展类型,但测试执行并不像预期的那样 运行。
我假设脚本未正确转换
要么
我在 package.json
中缺少一个配置
我感谢任何有使用 AVA 经验的人的任何帮助 --experimental-modules
package.json
{
"scripts": {
"test": "ava --init"
},
"ava": {
"require": [
"esm"
],
"babel": false,
"extensions": [
"mjs"
]
}
}
test.spec.mjs
import rotate from './index.mjs'
import test from 'ava';
test('rotate img', t => {
var m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
rotate(m);
t.is(m, [[7, 4, 1], [8, 5, 2], [9, 6, 3]]);
});
index.js
var rotate =function(matrix) {
let cols = 0,
original = JSON.parse(JSON.stringify(matrix));
for (let i=0; i < matrix.length; i++){
for (let j = matrix.length; j > 0; j--){
matrix[i][cols]=original[j-1][i];
cols+=1;
if(cols == matrix.length){
cols= 0;
}
}
}
}
export default rotate;
On 运行 npm test
定义在包脚本
ERROR:
1 test failed
rotate
12: rotate(m);
13: t.is(m, [[7,4,1],[8,5,2],[9,6,3]
14: ]);
Values are deeply equal to each other, but they are not the same:
[[7,4,1,],[8,5,2,],[9,6,3,],] <<fails
npm ERR! Test failed. See above for more details.
AVA 不支持 .mjs
开箱即用,但看起来您已经弄清楚了配置。
对于 test
脚本,只需使用 ava
,而不使用 --init
。
综上所述,测试失败是因为您使用了错误的断言。 t.is(actual, expected)
使用 Object.is(actual, expected)
(几乎是 actual === expected
)。而且你不能像那样比较数组。
改用t.deepEqual()
。
我目前正在使用带有 .mjs
扩展的 ES6 模块并为某些功能创建测试用例。
我选择 AVA
因为它支持这种扩展类型,但测试执行并不像预期的那样 运行。
我假设脚本未正确转换
要么
我在 package.json
我感谢任何有使用 AVA 经验的人的任何帮助 --experimental-modules
package.json
{
"scripts": {
"test": "ava --init"
},
"ava": {
"require": [
"esm"
],
"babel": false,
"extensions": [
"mjs"
]
}
}
test.spec.mjs
import rotate from './index.mjs'
import test from 'ava';
test('rotate img', t => {
var m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
rotate(m);
t.is(m, [[7, 4, 1], [8, 5, 2], [9, 6, 3]]);
});
index.js
var rotate =function(matrix) {
let cols = 0,
original = JSON.parse(JSON.stringify(matrix));
for (let i=0; i < matrix.length; i++){
for (let j = matrix.length; j > 0; j--){
matrix[i][cols]=original[j-1][i];
cols+=1;
if(cols == matrix.length){
cols= 0;
}
}
}
}
export default rotate;
On 运行 npm test
定义在包脚本
ERROR:
1 test failed rotate 12: rotate(m); 13: t.is(m, [[7,4,1],[8,5,2],[9,6,3] 14: ]); Values are deeply equal to each other, but they are not the same: [[7,4,1,],[8,5,2,],[9,6,3,],] <<fails npm ERR! Test failed. See above for more details.
AVA 不支持 .mjs
开箱即用,但看起来您已经弄清楚了配置。
对于 test
脚本,只需使用 ava
,而不使用 --init
。
综上所述,测试失败是因为您使用了错误的断言。 t.is(actual, expected)
使用 Object.is(actual, expected)
(几乎是 actual === expected
)。而且你不能像那样比较数组。
改用t.deepEqual()
。