我在NodeJS中使用以下模块:
档案:collection_item.js
var items = [];
var exports = module.exports;
exports = module.exports = function() {
};
exports.prototype.addItem = function(item) {
items.push(item);
};
exports.prototype.deleteItem = function(index) {
items.splice(index, 1);
};
我也对此代码进行了测试:
var assert = require("assert");
var itemCollection = require('../../item_collection.js');
describe('Item collection', function(){
describe('#addItem', function(){
it('should add object to the collection', function(){
var collection = new itemCollection();
collection.addItem({
test: 'aaa'
});
assert.equal(collection.count(), 1); // Success
});
});
describe('#deleteItem', function(){
it('should delete the given item from the collection', function(){
var collection = new itemCollection();
var item1 = {
test: 'aaa'
};
var item2 = {
test: 'bbb'
};
var item3 = {
test: 'ccc'
};
collection.addItem(item1);
collection.addItem(item2);
collection.addItem(item3);
collection.deleteItem(2);
assert.equal(collection.count(), 2); // Fails, says it has 3 items
});
});
});
我在这里遇到的问题是第二次测试失败了。它声称该集合中只剩下2个项目,但表示它有3个项目。
这是因为第一个测试为集合添加了1个项目。但在第二次测试中,我做了一个:
var collection = new itemCollection();
为什么收藏品不是空的?由于某种原因,它仍然有第一次测试中添加的项目。我不明白为什么会这样。
有人有任何想法吗?
答案 0 :(得分:1)
您的items
不是“私人”会员。
试试这个:
var exports = module.exports;
exports = module.exports = function() {
this.items = [];
};
exports.prototype.addItem = function(item) {
this.items.push(item);
};
exports.prototype.deleteItem = function(index) {
this.items.splice(index, 1);
};