如何获取模块的新实例
how to get new instance of module
我在 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
});
});
});
我这里的问题是第二次测试失败了。它断言 collection 中应该只剩下 2 个项目,但它说它有 3 个项目。
这是因为第一个测试向 collection 添加了 1 个项目。但是在第二次测试中我做了一个:
var collection = new itemCollection();
为什么 collection 不是空的?由于某种原因,它仍然包含在第一次测试中添加的项目。我不明白为什么会这样。
有人知道吗?
您的 items
不是 "private" 会员。
试试这个:
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);
};
我在 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
});
});
});
我这里的问题是第二次测试失败了。它断言 collection 中应该只剩下 2 个项目,但它说它有 3 个项目。
这是因为第一个测试向 collection 添加了 1 个项目。但是在第二次测试中我做了一个:
var collection = new itemCollection();
为什么 collection 不是空的?由于某种原因,它仍然包含在第一次测试中添加的项目。我不明白为什么会这样。
有人知道吗?
您的 items
不是 "private" 会员。
试试这个:
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);
};