这是一个奇怪的问题,但它已经困扰了我几个月了.我使用Wicket + Hibernate构建了一个基于JPA的Web应用程序(使用Maven构建),并希望直接测试DAO层.我创建了一个特定的src/test/resources/META-INF/persistence.xml文件,用于测试,但是已经遇到与WTP等冲突.为了解决这些问题,我创建了一个单独的测试项目,其中单元测试是实时的.有没有更好的方法来管理JPA项目的单元测试而不在持久性文件之间进行决斗?
附录:其他测试框架(例如TestNG)是否会使这更容易?
分离快速应用程序的不同层的最佳方法是什么,以便我的app.js文件不会充满功能?我来自Java世界,所以我通常将模型,业务逻辑和DAO代码放在不同的层中.
另一个问题,一直困扰着我:如何在app.js中打开与数据库的连接,然后在需要访问它的各种代码之间共享?不是路由功能,而是业务逻辑模块.
我在这里使用mongoose/q promises框架示例,但在尝试使用findOne时似乎与nfbind有一些问题,主要是因为Q框架中的示例似乎与gist中的示例不匹配.
我的代码:
var mongoose = require('mongoose');
var Q = require('q');
var user_schema = mongoose.Schema({username:String, last_touched:Date, app_ids:[String]});
var user = mongoose.model('user', user_schema);
exports.user = user;
exports.user.find = Q.nfbind(user.find);
exports.user.findOne = Q.nfbind(user.findOne);
Run Code Online (Sandbox Code Playgroud)
如果我打电话user.findOne({username:'test'}).then(function(err, user) { ... },用户总是未定义.如果我删除导出并使用带有回调的非承诺版本,我会得到用户.我错过了一些特殊的魔法,但是在查看了代码实现之后,从Q github和mongoose演示开始的例子......没有什么能真正跳出来.关于我如何findOne使用Q工作的任何想法?
我也尝试nfbind在源代码而不是模块中设置函数,但无济于事.
我从jsfiddle整合了Boronine优秀的ember.js字段验证代码.虽然这很精彩,但我仍然需要执行表单级别验证,以确保当用户提交表单时,一切正常.
最好的方法是什么?有没有一种方法可以将字段标记为已经过验证,以便表单处理程序可以简单地遍历字段以查看已验证的内容?
MP.SignUpFormView = Em.View.extend({
submitLogin:function (event) {
// walk through object fields to perform validation here, but how?!
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:
为了清楚起见,我正在用把手和有约束力的,而不是试图走DOM对象等.