ember.js - 测试 Ember.Logger.error 断言

标签 ember.js qunit ember-qunit

我正在使用 Ember.Logger.error:

if (isInvalid) {
  Ember.Logger.error('this is invalid');
}

我想在 qunit 中测试它:

assert.throws(() => myFunction(), /this is invalid/, 'error was thrown');

但是 assert.throws 没有捕捉到错误。如果我将 Ember.Logger.error 替换为简单的 throw 语句,它就会发生,但肯定有一种方法可以测试记录的 Ember 错误。有人认识路吗?

更新:

我制作了一个小插件,将此功能添加到 QUnit。可以领取here .

最佳答案

好的,所以我已经研究了它在 Ember 中是如何完成的,并且我已经了解了测试它的实践:

这是您可以用来测试在辅助单元测试中调用 Ember.Logger.error 的示例测试函数:

/* global Ember */

import { demo } from '../../../helpers/demo';
import { module, test } from 'qunit';

module('Unit | Helper | demo');

test('catching log', function(assert) {
  assert.expect(1); // define how many assertions we expect

  const oldError = Ember.Logger.error; // store original error function in variable

  Ember.Logger.error = function(message) { // monkey patch with our custom function
    assert.equal(message, 'this is invalid', 'error was thrown'); // our assertion
  };

  demo(); // actually call function

  Ember.Logger.error = oldError; // restore original error function
});

关于ember.js - 测试 Ember.Logger.error 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33764177/

相关文章:

ember.js - Ember.get() 和 this.get() 的区别

javascript - 使用 Qunit 和 JSMockito(或其他框架?)进行 Jquery 单元测试,输出未按预期工作

javascript - 如何在 Ember-Cli 中对类方法进行单元测试

ember.js - 测试时不存在初始化的依赖项

javascript - 从组件 View 获取 block 内容

haml - 使用Ember.js的HAML中的 Handlebars 模板

ember.js - 如何在 Ember.js 中禁用弃用警告?

javascript - JS 单元测试无需将整个 HTML 复制到单元测试中?

javascript - 不使用 XHR 加载资源

unit-testing - Qunit 测试位于包含多个 Controller 的文件中的 ember Controller ?