使用项目索引的单元测试数组
Unit testing array using items indexes
我是应用于数组并改变其项状态的单元测试方法。这些项目有不同的属性。例如,我的数组如下:
var array = [{state: false}, {status: true}, {health: true}];
应用方法后(项目顺序是相关的),我检查值是否已经改变,并且是我期望的(我使用mocha, chai):
expect(array[0]).to.have.property('state', true);
expect(array[1]).to.have.property('status', false);
expect(array[2]).to.have.property('health', false);
现在,假设我想添加新的能源项目到我的数组:
var array = [{state: false}, **{energy: true}**, {status: true}, **{energy: true}**, {health: true}];
我必须将测试的0,1,2索引更改为0,2,4,并为新项目添加新测试。
使用(或不使用)索引的好方法是什么,以便每次添加新项类型时不必更改所有索引?
您可以针对按照您期望的方式构建的模板测试您的结果。在下面的代码中,expected
是模板。
var chai = require("chai");
var expect = chai.expect;
var a = [{state: false}, {energy: true}, {status: true}, {health: true}];
var expected = [
{state: false},
{energy: true},
{status: true},
{health: true}
];
for (var i = 0, item; (item = expected[i]); ++i) {
expect(a[i]).to.eql(expected[i]);
}
你也可以这样做:
expect(a).to.eql(expected);
,但是如果您这样做,Mocha会产生一个完全没有信息的断言失败消息:expected [ Array(4) ] to deeply equal [ Array(4) ]
。在循环中一个接一个地执行期望,可以获得更好的消息。如expected { state: true } to deeply equal { state: false }
有一个用于chai的插件chai-things,它使这些内容真正具有可读性:
[{ a: 'cat' }, { a: 'dog' }].should.contain.a.thing.with.property('a', 'cat')
相关文章:
- 测试数组中每个项的内容
- 为什么当我在数组上测试regex时,它会返回false
- 润滑猴测试数组元素是否存在
- 单元测试数组推送
- 开玩笑:测试数组的随机位置
- 测试数组是否包含八个 3 键值中的任何一个 - 井字游戏
- 测试数组中的任何项是否返回 true
- 测试数组中所有关键字的文本区域
- 测试数组中的数据是否具有Javascript值
- 正在尝试测试数组中是否存在项,并更新数组
- 如何测试数组列中的单元格中的数字或字符串
- 如何测试数组中的一个值是否大于另一个值.javascript
- 生成可处理的合并单元格数组
- 如何用Jasmine在AngularJS中创建数组函数的单元测试
- 使用jQuery测试数组中是否存在具有属性的对象
- Javascript测试数组的角(Grid)
- 是否有任何QUnit断言/函数测试数组中的元素
- 单元测试 - 如何使用 BDD Javascript 测试数组元素类型
- Javascript测试数组和淡出
- 使用项目索引的单元测试数组