【发布时间】:2019-08-31 16:46:52
【问题描述】:
这是我的演员模型。
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ActorSchema = new Schema({
name: {
type:String,
required:true,
minlength: [3, 'Actor Name must be at least 3 characters.'],
},
imdb_url:{
type:String,
required:true,
}
});
module.exports = mongoose.model('actors', ActorSchema);
这是我的测试文件。
const request = require('supertest')
const Actor = require('../../models/actor')
let server;
describe('/actors', () => {
beforeEach( () => { server = require('../../app'); });
afterEach( () => { server.close() });
describe('GET /', () =>{
it("should return all actors", async () => {
const res = await request(server).get('/admin/actors');
expect(1).toBe(1);
})
})
})
所以,在一个测试文件中,我得到了这个:require('../../app');,它执行app.js 代码,它有这行require("./startup/routes")(app),在路由中,我需要模型。
运行 npm test 后,它说:
OverwriteModelError: 编译后无法覆盖
actors模型。
我该如何解决这个问题?
我知道 Actor 模型的 require 发生了两次,但是由于模块缓存,Actor 模型模块必须只执行一次,但我猜它会执行两次。
【问题讨论】: