如果我想在每次测试之前初始化数据库,如何组织代码
How to organize the code if I want to initialize database before each tests?
我是茉莉花的新手,我想为 mongodb 操作编写一些测试。
假设我在目录 spec
下有几个.spec.js
文件,其中的所有测试都应该删除测试数据库并插入一些测试数据。
我应该如何组织代码?我是否应该在某处定义一个init()
方法,并从所有其他测试中调用它?还是有更好的解决方案?
在describe
中,您可以像往常一样使用测试框架调用beforeEach
和afterEach
。这是设置和拆除测试先决条件的正确位置。
例如:
describe('My Module', function () {
beforeEach(function () {
...
});
afterEach(function () {
...
});
it('...', function () { ... });
});
无论如何,最佳做法是不要实际执行数据库操作:大概您使用了一些已经测试过的库。如果您模拟数据库层,这将为您节省很多麻烦。你可以通过使用间谍有效地用茉莉花做到这一点。
例如,假设您的数据库层有一个返回一些 json 的 get(id)
函数。您可能正在执行以下操作:
it('can access the db', function () {
var spy = spyOn(db, 'get').andCallFake(function (id) {
expect(id).toEqual('foo');
return {title: 'Foo Bar'};
});
// Something here does stuff that would result to a call to db.get
var res = db_calling_function('foo');
expect(spy).toHaveBeenCalled();
expect(res).toEqual({title: 'Foo Bar'});
});
相关文章:
- 使用javascript函数在页面初始化后加载jquery
- 未捕获错误:无法在初始化之前调用方法;
- 如何在剑道网格初始化后设置pageSizes
- React redux初始化功能,无论状态变化如何
- 为什么可以't Protractor在自动初始化的Angular网站上查找Angular
- 尝试初始化()Spine's控制器和故障
- Angular.js延迟控制器初始化
- 对插件初始化后动态加载的元素进行样式设置
- Angular JS控制器初始化错误
- 在XMLHttpRequest之后重新初始化jQuery
- ember-js组件初始化不同的函数
- 正确初始化索引数据库对象存储
- 如何在浏览器控制台中初始化 MongoDB 对象数据库
- 如果我想在每次测试之前初始化数据库,如何组织代码
- 如何添加新的输入行并插入数据库并出现错误 未初始化的字符串偏移量:0 in
- 为node.js应用程序初始化redis数据库的推荐机制是什么
- Django从数据库初始化base.html中的东西
- 从多个模块初始化Node.js数据库
- 在mongodb node.js初始化一个数据库时,remove()和save()是什么意思?
- 使用 php 从数据库填充初始化 jquery 数组时,Jquery 标签编辑器不起作用