Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 测试Ember.Logger.error断言_Ember.js_Qunit_Ember Qunit - Fatal编程技术网

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

Ember.js 测试Ember.Logger.error断言,ember.js,qunit,ember-qunit,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没有捕获错误。如果我用一个简单的throw语句替换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.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
});

这是什么样的测试?它是组件、控制器、助手单元测试吗?这非常有效!这有点冗长,所以我决定将其封装在一个定制的qunit断言中。下一步是制作一个小插件,让任何应用程序都可以访问新的qunit断言,
logs
。另外,在寻找初始值设定项的测试等价物时,我遇到了这个问题。谢谢参与!世界很小实际上,在ember-qunit测试中是否有一个与初始值设定项等价的测试?据我所知,没有。至少对于不运行
App.injectTestHelpers()
的单元测试。我没有足够的舒适感和能力来回答这个问题。通过使用
测试正文页脚
内容标记,我可以实现这一点。如果你感兴趣,你会找到插件。