正在测试Ember.Logger.error断言



我正在使用Ember.Logger.error:

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

我想在qunit中测试它:

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

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

更新:

我做了一个小插件,将这种能力添加到QUnit中。你可以在这里买到。

好吧,所以我已经研究了它在Ember中是如何实现的,我已经看到了测试它的做法:

  • ember.js/packages/ember/tests/helpers/link_to_test.js
  • ember.js/packages/ember/tests/routing/basic_test.js

以下是示例测试函数,您可以使用它来测试在helper单元测试中调用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
});

相关内容

  • 没有找到相关文章

最新更新