2015-09-25 110 views
0

我將運行mocha測試套件來測試節點紅色節點。 因此,我使用摩卡和硒驅動程序。用硒驅動程序運行node-red

我有一個問題來運行節點紅色模塊。 如果我用$ mocha --ui **tdd**開始測試,節點紅色應用程序不能找到我的流量。因爲他在'〜/ .node-red/tdd'文件夾中搜索。我不知道爲什麼摩卡[可選]被設置爲路徑? 只能用命令$ mocha函數suite();是不是定義?

我會解決問題,以初始化節點紅色與我自己的設置。 像這樣.. http://nodered.org/docs/embedding.html

用這種方式,我可以運行節點紅後「RED.start()」,但我沒有得到任何URL和無法打開節點衝在硒的驅動程序?

require('colors'); 
var async = require ('async'); 
var fs = require('fs'); 

var node = require ('../../mynode.js'); 
var assert = require('node-assertthat'); 

var http = require('http'); 
var http = require('http'); 
var express = require("express"); 
var RED = require("node-red"); 

// Create an Express app 
var app = express(); 

// Add a simple route for static content served from 'public' 
app.use("/",express.static("public")); 

// Create a server 
var server = http.createServer(app); 


var settings = { 
    settingsFile:"/usr/local/lib/node_modules/node-red/settings.js", 
    userDir:"/home/<user>/.nodered", 
    flowFile: "flow_<name>.json", 
    functionGlobalContext: { } // enables global context 
}; 

// Initialise the runtime with a server and settings 
RED.init(server,settings); 


var webdriver = require('../'), 
      By = webdriver.By, 
      until = webdriver.until; 

/* connect to selenium browser */ 
driver = new webdriver.Builder() 
     .forBrowser('chrome') 
     .build(); 


suite('node', function(){ 
     var driver; 
    suite('test setup', function(){ 
    suite('connect to http://127.0.0.1:1880', function(){  

     setup(function(){ 
     });  
     test('run Node-Red ',function(done){ 
      setTimeout(function(){ 
       /* run node-red */ 
       RED.start(); 
       done(); 
      },2000);  
     }); 

     test('open URL \'http://localhost:1880/#\'', function(done) { 
      setTimeout(function(){ 
       driver.get('http://localhost:1880/#'); 
       /* open node-red URL */  
       driver.getTitle().then(function(title) { 
      console.log('\nPage title is:\ '+ title.red.bold +"\n"); 
      assert.that(title, is.equalTo('Node-RED')); 
      done(); 
       }); 
      },2000); 
     }); 
}); 

回答

1

您已設置的默認路由

app.use("/",express.static("public")); 

這是怎麼回事,除非你設置節點RED路線不同的東西與節點-RED發生衝突。

您需要在設置中設置httpNodeRoot和httpAdminRoot,例如

var settings = { 
    settingsFile:"/usr/local/lib/node_modules/node-red/settings.js", 
    userDir:"/home/<user>/.nodered", 
    flowFile: "flow_<name>.json", 
    httpAdminRoot:"/red", 
    httpNodeRoot: "/api", 
    functionGlobalContext: { } // enables global context 
}; 

如果你這樣做,那麼你會在本地主機接入節點-RED如下:

http://localhost:1880/red

編輯: 你只需要設置httpNodeRoot如果您使用的是httpIn節點

+0

這沒有效果。 ' 9月25日18:40:51 - [info]流文件:/home/julien/.nodered/flow_ .json 9月25日18:40:51 - [info]創建新的流文件 25 Sep 18: 40:51 - [info]啓動流程 9月25日18:40:51 - [info]啓動流程 ' 我缺少節點紅色日誌中的行? ' 9月25日18:41:56 - [info]服務器現在運行在http://127.0.0.1:1880/ ' – zombinary

+0

您的代碼工作。 但是,如果我用'$ mocha'運行它不能達到網址'127.0.0.1:1880/red'。 你有什麼想法來解決它嗎? – zombinary

0

已解決

問題是'var driver' 在第一個'suite()'中,我初始化了一個新的'var drive'並覆蓋第一個。這是一個愚蠢的錯誤。

... 
suite('node', function(){ 
--  var driver; 
++  //var drive; 
... 
相關問題