我是 jasmine 的新手,我想为 mongodb 操作编写一些测试。
假设我.spec.js
在 directory 下有几个文件spec
,其中的所有测试都应该删除测试数据库并插入一些测试数据。
我应该如何组织代码?我应该在init()
某个地方定义一个方法,然后从所有其他测试中调用它吗?或者有没有更好的解决方案?
我是 jasmine 的新手,我想为 mongodb 操作编写一些测试。
假设我.spec.js
在 directory 下有几个文件spec
,其中的所有测试都应该删除测试数据库并插入一些测试数据。
我应该如何组织代码?我应该在init()
某个地方定义一个方法,然后从所有其他测试中调用它吗?或者有没有更好的解决方案?
在您的内部,您describe
可以像往常一样调用测试框架。这是设置和拆除测试先决条件的正确位置。beforeEach
afterEach
例如:
describe('My Module', function () {
beforeEach(function () {
...
});
afterEach(function () {
...
});
it('...', function () { ... });
});
在任何情况下,尽管最佳实践是不实际执行 db 操作:大概您使用一些已经过测试的库。如果您模拟您的数据库层,它将为您节省很多麻烦。您可以通过使用 jasmine 有效地执行此操作spies。
例如,假设您的 db 层有一个get(id)
返回一些 json 的函数。你可能正在做:
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'});
});