我很困惑。所以我创建了一个名为my_package
的Meteor包,现在我想用Tinytest
测试它。现在我正试图让一个简单的测试工作:测试以确保管理员用户可以登录:
程序my_app /包/ my_package / package.js
Package.on_test(function (api) {
api.use("my_package@1.0.0");
api.use("tinytest");
api.use("test-helpers");
api.add_files("tests.js");
});
程序my_app /包/ my_package / tests.js
if (Meteor.isClient) {
Tinytest.addAsync("Can admin log in?", function(test, next) {
var result = '';
Meteor.loginWithPassword('admin','adminadmin',function(error) {
// Called with no arguments on success
// or with a single Error argument on failure.
if (error) {
alert(JSON.stringify(error, null, 4));
result = false;
} else {
result = true;
}
test.equal(result,true);
next();
});
});
}
alert()的结果:
{
"error": {
"error": 403,
"reason": "User not found",
"message": "User not found [403]",
"errorType": "Meteor.Error"
},
"message": "[[object Object]]",
"errorType": "Meteor.Error"
}
但数据库确实包含我们正在测试的管理员用户!
exit tinytest
cd my_app
meteor
meteor mongo (in new terminal window)
db.users.find() // Returns admin user document!
所以我的问题是:为什么当用户确实存在于数据库中时,alert()报告“找不到用户”?
答案 0 :(得分:2)
当您运行测试时,会创建一个具有自己的本地MongoDB数据库的新临时流星应用程序。
您可以通过设置环境变量MONGO_URL来定义现有的MongoDB服务器。但它会删除数据库的现有内容。