繁体   English   中英

如何在 Jest 中为登录页面编写测试用例

[英]How to write test cases in Jest for login page

以下代码是我为了让管理员登录系统而编写的。 我现在正在尝试进行单元测试,并且必须特别为管理员测试 ValidateLogin。 我选择开玩笑来做到这一点。

我创建了一个测试文件:

const LoginController = reqire('./LoginController')
test('login to the system', () => {
    expect(true).toBe(true);
})

而不是检查真为真。 我想检查用户名和密码是否为真。 请解释我应该怎么做。

以下是登录代码:

class User {
    username;
    password;
    email;
    firstName;
    lastName;
    roleName;

    constructor(username,password,email,firstName, lastName, roleName){
        this.username = username;
        this.password = password;
        this.email = email;
        this.firstName = firstName;
        this.lastName = lastName;
        this.roleName = roleName;
    }

    getlogininfo(username, password, callback) {       
        var sql = "SELECT * FROM User Where username = '" + username + 
            "' AND password = '" + password + "'";
        var Username;
        var dataRes;

        con.query(sql, function(err, results){
            if (err){ 
                throw err;
            }

            if(results.length>0) { //result is not empty
                Username = results[0].username;  // Scope is larger than function
                dataRes = {
                    username: results[0].username,
                    firstName: results[0].firstName,
                    lastName: results[0].lastName,
                    roleName: results[0].roleName
                }
                return callback(dataRes);
            } else {
                return callback(false);
            }
        })
    }
}

exports.User = User
class LoginController {
 
    ValidateLogin(req, res) {   
        let user = new User(); 

        var dataRes;
        var username = req.body.username
        var password = req.body.password

        console.log(username + "kekw" + password); 
        
        user.getlogininfo(username, password, function(result){
            if(result) { 
                dataRes = result;
                var session;

                // Login endpoint               
                if(dataRes.roleName == "useradmin") {
                    console.log("Call User Admin Dashboard");
                    res.redirect("/UserAdmin");
                }
                else if(dataRes.roleName == "manager") {
                    console.log("Call Manager Dashboard");
                    res.redirect("/Manager");
                }
                else if(dataRes.roleName == "staff") {
                    console.log("Called Staff Dashboard");
                    res.redirect('/Staff');
                }
                else if(dataRes.roleName == "customer") {
                    console.log("Called Customer Dashboard");
                    res.redirect('/Customer');
                }
                /*
                else if(dataRes.role == "Pharmacist") {
                    console.log("Called Pharmacist home");
                    res.redirect('/PharmacistHome');
                }
                else if(dataRes.role == "Patient") {
                    console.log("Called Patient home");
                    res.redirect('/PatientHome');
                }*/                
            }
            else {
                req.flash('message', 'Wrong Username or Password!')
                res.redirect("/?error=true");
                return false;
            }
        });        
    }    
}

//module.exports = LoginController;
exports.LoginController = LoginController;

我想为 useradmin 登录的用户名和密码编写测试用例。 我该怎么做? 谢谢。

能否请您发送完整的错误代码? 获得解决方案将非常有帮助。 虽然我认为这可能是 ES6 模块的错误。 检查你的 package.json 中是否有"type": "module" 如果是这种情况,您必须使用import * from './LoginController'导入您的 LoginController

你写错了“require”:像这样: const LoginController = reqire('./LoginController');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM