测试打字稿时收到邮递员错误。我该如何解决?

时间:2020-07-19 01:56:24

标签: typescript-typings postman-testcase

这与udacity-cloud开发人员项目有关。我被要求为我创建的id创建一个测试代码,这使我将201和404的错误和单个值抛出错误。此外,还要求我测试签名的URL,这使我犯了同样的错误。不知道为什么。

当我尝试在邮递员中通过id执行测试时,遇到了这3个错误。
FAIL状态码为201 | AssertionError:预期响应的状态码为201,但得到404 失败,该帖子返回ID为|的新项目。 JSONError:意外令牌

import { Router, Request, Response } from 'express';
import { FeedItem } from '../models/FeedItem';
import { requireAuth } from '../../users/routes/auth.router';
import * as AWS from '../../../../aws';

const router: Router = Router();

// Get all feed items
router.get('/', async (req: Request, res: Response) => {
    const items = await FeedItem.findAndCountAll({order: [['id', 'DESC']]});
    items.rows.map((item) => {
            if(item.url) {
                item.url = AWS.getGetSignedUrl(item.url);
            }
    });
    res.send(items);
});

//@TODO
//Add an endpoint to GET a specific resource by Primary Key

router.get('/feed/:id', async (req: Request, res: Response) => {

            console.log(req.query.id)
            
            const idval = await FeedItem.findByPk(req.query.id)
            
            res.send(idval);
    });


    // update a specific resource
    router.patch('/:id', 
        requireAuth, 
        async (req: Request, res: Response) => {
            //@TODO try it yourself
            res.send(500).send("not implemented")

    });

// Get a signed url to put a new item in the bucket
router.get('/signed-url/:fileName', 
    requireAuth, 
    async (req: Request, res: Response) => {
    let { fileName } = req.params;
    const url = AWS.getPutSignedUrl(fileName);
    res.status(201).send({url: url});
});

// Post meta data and the filename after a file is uploaded 
// NOTE the file name is they key name in the s3 bucket.
// body : {caption: string, fileName: string};
router.post('/', 
    requireAuth, 
    async (req: Request, res: Response) => {
    const caption = req.body.caption;
    const fileName = req.body.url;

    // check Caption is valid
    if (!caption) {
        return res.status(400).send({ message: 'Caption is required or malformed' });
    }

    // check Filename is valid
    if (!fileName) {
        return res.status(400).send({ message: 'File url is required' });
    }

    const item = await new FeedItem({
            caption: caption,
            url: fileName
    });

    const saved_item = await item.save();

    saved_item.url = AWS.getGetSignedUrl(saved_item.url);
    res.status(201).send(saved_item);
});

export const FeedRouter: Router = router;

0 个答案:

没有答案