我正在尝试使用速度 [1] 和 jasmine [2] 对我的流星应用程序进行测试。我定义了一个名为“object”的集合(collections/object.js):
Objects = new Meteor.Collection('objects');
我实现了一个设置函数(tests/jasmine/server/unit/ObjectSpec.js):
describe('Objects', function () {
'use strict';
// set up
beforeEach(function () {
// 1 - backup all data
MeteorStubs.install();
// 2 - delete current 'Objects'-items
Objects.remove({});
// 3 - add test data
Objects.insert({
someProperty: 'data1'
});
});
然后我运行实际测试(相同的文件):
// actual tests
it("should delete a specific object", function () {
var selector = {someProperty: 'data1'};
var selectedObject = Objects.findOne(selector);
// will return 'Expected undefined not to be undefined.'
expect(selectedObject).not.toBe(undefined);
Meteor.call('deleteObject', selectedObject, function(error, id) {
if (error)
return alert(error.reason);
});
expect(Objects.findOne(selector)).toBe(undefined);
});
之后,我在拆解(同一文件)中恢复旧的应用程序状态:
// tear down
afterEach(function () {
Objects.remove({});
MeteorStubs.uninstall();
});
现在,在执行测试时,velocity 向我抛出:Expected undefined not be undefined。
我想知道,'beforeEach'-Function 中的数据是否真的会在实际测试功能中被插入和访问?另外,我尝试在测试函数中使用 console.log() 来显示当前数据,但它不会显示在浏览器控制台中。为什么?