我希望在我的网络应用程序上有一个按钮查询MongoDB,并根据该查询的结果向相应的个人发送短信。
我遇到的问题是测试。我无法弄清楚如何让客户端的按钮在服务器端运行node.js文件。
Node.js:v8.9.4
Vue.js:2.5.13
快递:4.13.3
编辑:
我已经能够让nodejs脚本独立运行。我只是不知道如何从客户端调用它
编辑2:
Main.js
// Dependencies
var http = require('http');
var express = require('express');
var path = require('path');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var busboy = require('connect-busboy');
var cors = require('cors');
var mongoose = require('mongoose');
// Configuration
var config = require('./config');
var twilio = require('twilio');
// Database
mongoose.connect(config.database);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function(){
console.log('Connected to database');
});
var app = express();
app.set('port', process.env.PORT || 3000);
// Setup middleware
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser(config.sessionSecret));
app.use(express.static(path.join(__dirname, 'dist')));
app.use(busboy());
app.use(cors({
origin: true,
credentials: true
}));
app.get('/session',function(req){
twilio.notifyOnSession();
});
var server = http.createServer(app);
var port = app.get('port');
server.listen(port);
console.log('Listening on port ' + port);
// Load server router
require('./router')(app);
编辑3:
Dashboard.vue
以下是重定向到应用正确部分的代码
getHelpNext() {
var topic = this.pickedTopic;
topic = topic.toLowerCase();
var linkName = '/session/' + topic;
this.$router.push(linkName);
}
编辑4:
Router.js
var path = require('path');
module.exports = function(app){
console.log('Initializing server routing');
require('./auth')(app);
require('./api')(app);
// Determine if incoming request is a static asset
var isStaticReq = function(req){
return ['/auth', '/api', '/js', '/css'].some(function(whitelist){
return req.url.substr(0, whitelist.length) === whitelist;
});
};
// Single page app routing
app.use(function(req, res, next){
if (isStaticReq(req)){
return next();
}
res.sendFile(path.join(__dirname, '../dist/index.html'));
});
};
答案 0 :(得分:1)
您需要创建一个获取请求的端点。这是明确的:
name
其中app是您在某个端口上侦听的快速服务器。 这应该是你的vue
app.post('/some/end/point', (req, res) => {
// -> send twillo message code here. If you use bodyParser,
// req.body.message holds 'foo bar'
res.status(200).end(); // do this if sending the message is a success
})
答案 1 :(得分:0)
您在这里描述了几个应单独进行单元测试的组件。
您的问题可能是指最后一部分,但为了正确实施,您必须将单元测试分解为以下主题。
至于UI测试,有很多工具,我最喜欢的是puppeteer。
答案 2 :(得分:0)
您需要使用expressjs
在服务器上创建端点,将其公开到互联网,然后通过请求从您的客户端调用它。