контроллер регистров модульного тестирования - PullRequest
0 голосов
/ 10 июля 2019

Я пишу модульный тест для моего контроллера регистров, используя mocha и chai. Но я не могу получить доступ к функции save() из моего контроллера, когда я использую заглушку. Любые предложения о том, как это сделать?

Я пытался напрямую использовать функцию save() с контроллера регистра, но к ней не было доступа.

это мой тестовый код:

    const register = require("../server/controllers/register");
    var res = {
      Name: "test",
      Email: "abc@text.com",
      MobileNumber: "",
      Password: "text",
      Wallet: 0
    };

    describe("function register() test", function() {
      var userStub;
      beforeEach(function() {
        userStub = sinon.stub(register, "addUser").callsFake(function() {
          return res;
        });
      });
      afterEach(function() {
        userStub.restore();
      });

      it("should accept user when all required fields are filled", function(done) {
        register
          .addUser({
            Name: "test",
            Email: "abc@text.com",
            MobileNumber: "",
            Password: "text"
          })
          .then(user => {
            expect(user).to.equal(res);
            done();
          });
      });

      it("should give error when all fields are not filled", function(done) {
        register
          .addUser({
            Name: "test",
            Email: "abc@text.com",
            MobileNumber: ""
          })
          .catch(function(err) {
            var expectedErr = "user can't be registered , fill all fields";
            expect(expectedErr).to.equal(err);
            done();
          });
      });
    });

код контроллера регистра:

    // Require UserModel model in our routes module
    var UserModel = require("../models/user");

    // post function to register new user
    var BCRYPT_SALT_ROUNDS = 10;
    exports.addUser = (req, res) => {
      const newUser = new UserModel({
        Name: req.body.Name,
        Email: req.body.Email,
        MobileNumber: req.body.MobileNumber,
        Password: req.body.Password
      });
      bcrypt
        .hash(newUser.Password, BCRYPT_SALT_ROUNDS)
        .then(function(hashedPassword) {
          newUser.Password = hashedPassword;
          return newUser.save().then(user => res.json(user));
        })
        .catch(error => {
          console.log("Error saving user ", error);
          res.status(400).send("user can't be registered , fill all fields");
        });
    }; 

ошибки, которые я получаю

1) function register() тест должен принять пользователя, когда все обязательные поля заполнены:

TypeError: register.addUser (...). Тогда не является функцией

2) function register() тест должен выдавать ошибку, когда все поля не заполнены:

TypeError: register.addUser (...). Catch не является функцией

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...