簡體   English   中英

如何在Sails中使用mocha測試控制器?

[英]How to test controller using mocha in Sails?

我的登錄頁面有以下Controller

// Authentication Controller
// the basics of Passport.js to work.
var AuthController = {

    // localhost:1337/login  Render the login page
    // <form role="form" action="/auth/local" method="post">
    //     <input type="text" name="identifier" placeholder="Username or Email">
    //     <input type="password" name="password" placeholder="Password">
    //     <button type="submit">Sign in</button>
    // </form>

    login: function(req, res) {
        var strategies = sails.config.passport,
            providers = {};

        // Get a list of available providers for use in templates.
        Object.keys(strategies).forEach(function(key) {
            if (key === 'local') return;
            providers[key] = {
                name: strategies[key].name,
                slug: key
            };
        });

        // Render the `auth/login.ext` view
        res.view({
            providers: providers,
            errors: req.flash('error')
        });

    },

    // Log out a user and return them to the homepage
    // Passport exposes a logout() function on req (also aliased as logOut()) that
    // can be called from any route handler which needs to terminate a login
    // session. Invoking logout() will remove the req.user property and clear the
    // login session (if any).
    logout: function(req, res) {
        req.logout();
        res.redirect('/login');
    },

    // The registration form is Just like the login form
    register: function(req, res) {
        res.view({
            errors: req.flash('error')
        });
    },

    // Create a third-party authentication endpoint
    provider: function(req, res) {
        passport.endpoint(req, res);
    },

    // Create a authentication callback endpoint
    // This endpoint handles everything related to creating and verifying Pass-
    // ports and users, both locally and from third-aprty providers.
    // Passport exposes a login() function on req (also aliased as logIn()) that
    // can be used to establish a login session. When the login operation
    // completes, user will be assigned to req.user.
    callback: function(req, res) {
        passport.callback(req, res, function(err, user) {
            req.login(user, function(err) {
                // If an error was thrown, redirect the user to the login which should
                // take care of rendering the error messages.
                if (err) {
                    res.redirect('/login');
                }
                // Upon successful login, send the user to the homepage were req.user
                // will available.
                else {
                    res.redirect('/');
                }
            });
        });
    }
};

module.exports = AuthController;

我使用Mocha作為我的測試框架。 該應用程序基於Sails 我如何編寫Mocha測試用例並在提供的Controller上運行它們?

我正在使用supertest作為用戶調用控制器,為此,首先解除之前函數中的風帆,以便它可以被supertest用作服務器。

before(function (done) {
 Sails.lift({
        // configuration for testing purposes
        log: {
            //level: 'silly'
            level: 'silent'
        },
        hooks: {
            grunt: false,
        },
    }, function (err, sails) {
done(err, sails);
        });
}

然后使用你的sails app的url初始化supertest

request = require('supertest');
agent = request.agent(appurl);

您現在可以編寫測試來發布/獲取數據以從前端測試您的控制器,就像客戶端一樣。



it('should do the post and return whatever', function (done) {
    agent.post('/controller/function')
    .send(the_post_object_with_params)
    .end(function (err, res) {
        if (err) {
            console.log(err);
        }
        console.log(res.body); // the content 
        done();
    });
}

我認為主要的是將sails應用程序包含在您的測試用例中。 我也沒有發現控制器測試的例子,但有些模型:

是否可以對Sails.js中的模型使用Mocha Framework?

無法在sailsjs中對我的模型進行單元測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM