代码之家  ›  专栏  ›  技术社区  ›  Sergei R

快报:我不懂怎么用信诺

  •  0
  • Sergei R  · 技术社区  · 6 年前

    我有一个控制方法:

    registration(req, res) {
      if (!req.user) return res.status(401).send('Registration failed');
    
      const { user } = req;
      return res.status(201).json({ user });
    },
    

    我想测试用我的假数据发送json的注册方法。

    const { expect } = require('chai');
    const sinon = require('sinon');
    const authController = require(...);
    
    describe('authController', () => {
      const USER = {
      email: 'test@test.com',
      password: 'Test12345',
      confirm: 'Test12345',
      username: 'Test',
    };
    
    it('it should send user data with email: test@test.com', () => {
      const req = { user: USER };
      const res = {
        status: sinon.stub().returnsThis(),
        json: sinon.spy(),
      };
    
      console.log('RES: ', res); // I can't see the json data
      authController.registration(req, res);
      expect(res.json).to.equal(USER);
    });
    

    我检查了我的用户数据是否进入控制器(req.user)。 我试着用spy查找包含res的内容,但是没有找到我的用户数据 我不明白在我的情况下如何使用sinon?

    1 回复  |  直到 6 年前
        1
  •  1
  •   deerawan    6 年前

    你差点通过考试。对于这种测试,我们可以使用 calledWith 从sinon检查函数和参数是否被正确调用。

    describe('authController', () => {
      const USER = {
        email: 'test@test.com',
        password: 'Test12345',
        confirm: 'Test12345',
        username: 'Test',
      };
    
      it('it should send user data with email: test@test.com', () => {
        const req = { user: USER };
        const res = {
          status: sinon.stub().returnsThis(),
          json: sinon.spy(),
        };
    
        authController.registration(req, res);
    
        // this is how we check that the res is being called with correct arguments
        expect(res.status.calledWith(201)).to.be.ok;
        expect(res.json.calledWith({ user: USER })).to.be.ok;
      });
    });
    

    希望有帮助。

    推荐文章