اذهب إلى المحتوى

السؤال

نشر

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

أنا اعرف اين يتم عمل ال 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;

 

Recommended Posts

  • 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)//المساواة
    
  })
})

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...