Ember.js 测试Ember.Logger.error断言
我正在使用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,它就会发生,但肯定有一种
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()
的单元测试。我没有足够的舒适感和能力来回答这个问题。通过使用测试正文页脚
内容标记,我可以实现这一点。如果你感兴趣,你会找到插件。