• 0

أين أقوم بعمل ال unit test فى node js ؟؟

السلام عليكم .. 

أنا اعرف اين يتم عمل ال integration test فهو مرتبط ارتباط وثيق ب http requests ولكن .. 

عندما درست ال unit test علمت انه يتم عمله للفانكشن التى ليست مرتبطة بأى أحداث خارجية كمثلا اتصال مع قاعدة البيانات مثلا .. ولكن اين استخدمه فى مشروع النود الخاص بى ؟؟ 

انا اعلم ان ال unit test يستخدم فى عمل تست للفانكشن لاختبار ان كانت تؤدى مهمتها بشكل صحيح ام لا .. وايضا يمكننى ان اقوم بعمل تست ل string او object او array ... الى اخره ..

انا فى مشروعى فى ال model عبارة عن أوبجكت .. هل ال unit test يستخدم فى ال model ؟ باعتبار انه object ام لا لا ؟؟

 

const mongoose = require("mongoose");

const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 255,
  },
  email: {
    type: String,
    required: true,
  },
  passwordHash: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 255,
  },
  isAdmin: {
    type: Boolean,
    default: false,
  },
});



exports.User = mongoose.model("User", userSchema);
exports.userSchema = userSchema;

 

 

 

لكنى اعتقد ان هذه تحتاج الى unit test صحيح ؟؟ ام ماذا ؟

const expressJwt = require("express-jwt");

function authJwt() {
  const secret = process.env.secret;
  return expressJwt({
    secret,
    algorithms: ["HS256"],
    isRevoked: isRevoked,
  }).unless({
    path: [
      `/users/login`,
      `/users/register`,
    ],
  });
}

async function isRevoked(req, payload, done) {
  if (!payload.isAdmin) {
    done(null, true);
  }

  done();
}

module.exports = authJwt;

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

نعم ال unit test بامكان اجراءه على ال model سأفترض model صغير لتبسط المثال 

const UserSchema = new mongoose.Schema({
  username: {
    type: String
  },
  email: {
    type: String
  }
})

يمكنك اجراء unite test للتحقق مثلا من ان username و email متواجدين فعلا في model

const User = require('/user.model.js')
...
describe("User Model", () => {
  it("has username and email attributes", () => {
    
    let expectedKeys = ["username", "email"]//المفاتيح المتوقع تواجدها 
    
    let keys = Object.keys(User.schema.paths)//جلب المفاتيح الخاصة بالموديل
    
    let userAttributes = [keys[0], keys[1]]//هيكلتها بطريقة تساوي المفاتيخ المتوقغة 
    
    expect(userAttributes).toStrictEqual(expectedKeys)//المساواة
    
  })
})

بالنسبة للجزء الثاني من السؤال فهذا يعتمد عليك وعلى المعايير التي تريد تجريبها بعد ذلك يمكنك كتابة شيفرة الفحص وتوفير المعاملات اللازمة.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن