目标:使用Mocha,Zombie.js和Mongoose,我正在尝试测试注册表单。我想确保使用以下代码将用户添加到数据库中:
describe('User Signup', function() {
before(function(done) { //setup db connection and browser
conn = mongoose.connect('mongodb://localhost', function(err) {
browser = new Browser({site: 'http://localhost:3000'});
done();
});
});
before(function(done) { //go to signup page
browser.visit('/user/signup', done);
});
it('can signup a new user', function(done) {
browser.fill("input[name='username']", 'johnDoe');
browser.fill("input[name='pwd']", 'password');
browser.fill("input[name='pwd_retype']", 'password');
browser.fill("input[name='city']", 'New York, NY');
browser.pressButton('#signup-submit').then(function() {
chai.assert.isOk(browser.success);
UserModel.findOne({username: 'johnDoe'}, function(er, usr) {
chai.assert.ifError(er);
chai.assert.isNotNull(usr); //check if user was added to DB
done();
});
});
});
});
问题:用户被添加到数据库中,但它被添加为空白用户(没有用户名,密码等)。我检查了处理请求的路由器,并打开console.log
打印用户名以查看zombie.js是否填写表单字段,但字段打印为空。我得到以下输出:
因此,当mocha测试第一次运行时,我得到一行空白的用户名值SAVE ATTEMPT FOR:
。但是,当我更改文档并保存时,除了正确的值SAVE ATTEMPT FOR: johnDoe
之外,我再次获得输出。
我不明白为什么在保存我的js文件时会再次发送请求。当然,在我的测试评估之后会发生这种情况。任何人都有关于可能出现问题的想法吗?