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

ما الخطأ فى هذا ال inegration test ؟

Ahmed Sawy

السؤال

const express = require("express");
const { Course } = require("../model/course");
const router = express.Router();

router.get("/", async (req, res) => {
  const coursesList = await Course.find();
  // .populate("Auther");
  res.send(coursesList);
});

router.post("/", async (req, res) => {
  let newCourse = new Course({
    name: req.body.name,
    description: req.body.description,
    price: req.body.price,
    user: req.body.user,
    rating: req.body.rating,
    isFeatured: req.body.isFeatured,
    dateCreated: req.body.dateCreated,
  });

  newCourse = await newCourse.save();
  res.send(newCourse);
});

router.put("/:id", async (req, res) => {
  let updatedCourse = await Course.findByIdAndUpdate(
    req.params.id,
    {
      name: req.body.name,
      description: req.body.description,
      price: req.body.price,
      user: req.body.user,
      rating: req.body.rating,
      isFeatured: req.body.isFeatured,
      dateCreated: req.body.dateCreated,
    },
    { new: true }
  );
  res.send(updatedCourse);
});

router.delete("/:id", async (req, res) => {
  await Course.findByIdAndRemove(req.params.id);
  res.send(`The course is Deleted`);
});

router.get(`/get/count`, async (req, res) => {
  const coursesCount = await Course.countDocuments((count) => count);

  if (!coursesCount) {
    res.status(500).json({ success: false });
  }
  res.send({
    coursesCount: coursesCount,
  });
});

module.exports = router;

هذا هو الرواتر ..

 

 

 

هذا app.js

const express = require("express");
const mongoose = require("mongoose");
const app = express();
const authJwt = require("./helpers/jwt");

const coursesRouter = require("./router/courses");
const usersRouter = require("./router/users");
const questionsRouter = require("./router/questions");

// app.use(authJwt());
app.use(express.json());
app.use("/courses", coursesRouter);
app.use("/users", usersRouter);
app.disable("etag");
app.use("/questions", questionsRouter);

mongoose
  .connect(
    "mongodb+srv://ahmed:a12345678@cluster0.f0bzw.mongodb.net/carnaDatabase?retryWrites=true&w=majority",
    {
      useNewUrlParser: true,
      useUnifiedTopology: true,
      dbName: "carnaDatabase",
    }
  )
  .then(console.log("Connected"))
  .catch((err) => console.log(err));

const port = 3000;
app.listen(port, () => console.log(`App listening on port ${port}`));

 

 

واخيرا هذا هو ملف ال courses.test.js

const { request } = require("express");
const superTest = require("supertest");
const courses = require("../router/courses");
const app = require("../app");

describe("Post /courses", () => {
  describe("given a right inputs", async () => {
    test("should res to be 200 status code", () => {
      const res = request(app).post("/courses").send({
        name: "first course",
        description:
          "description should be more than 25. description should be more than 25. description should be more than 25. description should be more than 25. ",
        price: 100,
      });
      expect(res.statusCode).toBe(200);
    });
  });
});

 

 

هذه اول مرة اقوم بها ب integration test والفيديو الذى علمنى كان يشرح على اساس جافا سكريبت وليس node js ولا اعلم لماذا هذا ال test لا يعمل حيث يعطينى خطأ 

TypeError: Cannot read property 'JSON' of null

 

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

Recommended Posts

  • 1

معذرة اخطات في وضع  async في المكان الخطا

describe("Post /courses", async() => {
  describe("given a right inputs",  () => {
    test("should res to be 200 status code", async() => {
      
      const res = await request(app).post("/courses").send({
        name: "first course",
        description:
          "description should be more than 25. description should be more than 25. description should be more than 25. description should be more than 25. ",
        price: 100,
      });
      expect(res?.statusCode).toBe(200);
    });
  });
});

 

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

  • 1

أعتقد ان مسبب الخطأ هو محاولة قراءة statusCode من res و res في هذه الحالة undefined لذا استخدم async await  لانتظار الطلب 

describe("Post /courses", async() => {
  describe("given a right inputs", async () => {
    test("should res to be 200 status code", () => {
      
      const res = await request(app).post("/courses").send({
        name: "first course",
        description:
          "description should be more than 25. description should be more than 25. description should be more than 25. description should be more than 25. ",
        price: 100,
      });
      expect(res?.statusCode).toBe(200);
    });
  });
});

عدلت شيفرة ال testing قليلا باظافة async await وايضا لاحظ

      expect(res?.statusCode).toBe(200);

علامة الاستفهام مفادها أنه اذا كان res هو null او undefined لا يقرأ من الأساس فقط لتفادي الخطأ

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

  • 1
بتاريخ 22 دقائق مضت قال Ahmed Sawy:

ظهرت لى هذه الرسالة 

الدالة التي تستخدم await يجب أن تكون async، هل يمكنك محاولة وضع async في السطر 8 قبل تعريف anonymos function؟

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

  • 0
بتاريخ 34 دقائق مضت قال Salah Eddin Berriani:

أعتقد ان مسبب الخطأ هو محاولة قراءة statusCode من res و res في هذه الحالة undefined لذا استخدم async await  لانتظار الطلب 


describe("Post /courses", async() => {
  describe("given a right inputs", async () => {
    test("should res to be 200 status code", () => {
      
      const res = await request(app).post("/courses").send({
        name: "first course",
        description:
          "description should be more than 25. description should be more than 25. description should be more than 25. description should be more than 25. ",
        price: 100,
      });
      expect(res?.statusCode).toBe(200);
    });
  });
});

عدلت شيفرة ال testing قليلا باظافة async await وايضا لاحظ


      expect(res?.statusCode).toBe(200);

علامة الاستفهام مفادها أنه اذا كان res هو null او undefined لا يقرأ من الأساس فقط لتفادي الخطأ

 

ظهرت لى هذه الرسالة 

Await.thumb.png.e4a4c3dabab10d0ec6a7f7d14b5831bc.png

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

  • 0
بتاريخ 20 دقائق مضت قال Wael Aljamal:

الدالة التي تستخدم await يجب أن تكون async، هل يمكنك محاولة وضع async في السطر 8 قبل تعريف anonymos function؟

شكرا جزيلا اخى العزيز

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...