返回数组中的特定对象值

时间:2017-01-30 15:00:37

标签: javascript arrays unit-testing object methods

我想在使用

测试期间检查特定的控制台日志
it('should return logs', function(done) {
  browser
      .log('browser').then(function(logs){
        console.log(logs);
      })
  ...
});

我得到的是:

[ { level: 'INFO',
    message: 'https://localhost:3000/ 42:14 "foo"',
    timestamp: 1485785320222 },
  { level: 'INFO',
    message: 'https://localhost:3000/ 43:14 "bar"',
    timestamp: 1485785320222 },
  { level: 'INFO',
    message: 'https://localhost:3000/ 46:14 Array[6]',
    timestamp: 1485785320225 },
  { level: 'SEVERE',
    message: 'https://localhost:3000/favicon.ico - Failed to load resource: the server responded with a status of 404 (Not Found)',
    timestamp: 1485785320298 } ]

所以它应该只返回一个日志条目列表,如" foo"和" bar",所以我可以检查它是否等于我应该的假设值。

我现在不确定我是否需要一个" for..in"构建我可以重用的方法,或者只是循环遍历多个对象并查找logs.value.message并使用""修剪该部分。

1 个答案:

答案 0 :(得分:1)

只筛选符合您要求的日志,这可能是最简单/最容易理解的:

it('should return logs', function(done) {
  browser
      .log('browser').then(function(logs){
        console.log(logs.filter(function (logItem) {
          return logItem.message.match(/"foo"|"bar"$/);
        });
      })
  ...
});