【发布时间】:2020-03-12 18:38:58
【问题描述】:
postAdmin(req, res, cb) {
const admin = await Admin.findOne({ req.body.username });
if (!admin) {
error("Admin doesn't exist");
} //split here? adminValidationDAO();
const isMatch = await bcrypt.compare(password, user.password);
if(!isMatch){
error("Wrong password");
} //split here? passwordValidationDAO();
const email = new Email ({
text: req.body.text,
title: req.body.title,
});
const response = await email.save();
//split here? saveResponseDAO()?
}
单元测试是测试小段代码的实践, 通常是单独的功能,单独和隔离。如果您的测试使用 一些外部资源,例如网络或数据库,它不是 单元测试。
我正在考虑测试我上面的代码,但在对单元测试进行了一些研究后,我意识到我认为单元测试是集成测试。在 postAdmin 中测试整个代码块将是集成测试。然后我想知道我是否可以将 postAdmin 中的代码分成三块并使它们可单元测试,但这里有以下问题:
第一个使用 findOne() 进行数据库调用。
第二个依赖库,那不是外部资源吗?
第三个使用 save() 调用数据库。
那么你同意没有可以进行单元测试的东西吗?
【问题讨论】:
-
您可以对其中的大部分内容进行单元测试。只需模拟、存根或以其他方式更改所有外部内容,因此您无需依赖这些内容,然后检查其余逻辑是否正确。
-
我应该像上面在 cmets 中指出的那样将函数分成三个吗?
标签: node.js unit-testing tdd