我的应用程序在localStorage
中存储了一些关于当前会话的信息。因此,我需要我的测试在所有测试文件的每个测试之前或之后清除localStorage
。是否有一种方法来定义beforeEach
或afterEach
回调全局,而不是在每个测试文件?
出于几乎相同的原因,我们包装了ember-qunit的module
、moduleFor
和moduleForComponent
。我们进口的是这些包装纸而不是ember-qunit。
另一个建议是用服务包装localStorage。永远不要访问localStorage,除了这个服务。因此,您可以在测试中使用它的模拟实现。
更新:
如何实现:
import { moduleFor, moduleForModel, test, only, setResolver } from 'ember-qunit';
import { moduleForComponent as qunitModuleForComponent } from 'ember-qunit';
function moduleForComponent(name, description, callbacks) {
//our implementation that wraps "qunitModuleForComponent"
//eg. init commonly used services vs.
}
export {
moduleFor,
moduleForComponent,
moduleForModel,
test,
only,
setResolver
};
优点:
- 防止代码重复
- 集中单元测试管理
- 易于为自定义需求添加新方法,如:
moduleForValidatableComponent
,moduleForLocalStorage
缺点:
- ember-cli生成正在导入
ember-qunit
的测试。开发人员必须更改这些包装器的导入语句。有时它被遗忘了。(当测试失败时,开发人员要记住他们需要更改import语句。) - 对于某些测试,不需要换行。