标签: node.js-tape

14
推荐指数
1
解决办法
2376
查看次数

stdout 不是 tty。将 bash 用于节点 + 磁带 + tap-spec

正在看磁带 + 点击视频并试图让它工作。
操作系统:Windows 7 Git Bash Shell

node main.js | ./node_modules/.bin/tap-spec
Run Code Online (Sandbox Code Playgroud)

stdout 不是 tty。

主要.js:

var test = require('tape');
var add = require('./add');

test('add: two numbers add correctly', function(t) {
var actual = add(1,2);
var expected = 3;
t.equal(actual, expected);
t.end();
});
Run Code Online (Sandbox Code Playgroud)

添加.js:

module.exports = function(a, b) {
return a + b;
};
Run Code Online (Sandbox Code Playgroud)

winpty 节点 main.js | ./node_modules/.bin/tap-spec 不能解决问题。

node.js git-bash node.js-tape

9
推荐指数
2
解决办法
1万
查看次数

使用异步forEach循环磁带"测试退出但不结束"错误

我在做什么

编辑:我创建了一个repo,其中包含了我的问题的简化版本.

我正在尝试使用browserstack,selenium-webdriver磁带设置自动前端测试.

我们的想法是定义多个浏览器和设备,这些浏览器和设备必须使用X量的给定测试一个接一个地进行测试.在下面的示例中,我在OSX上只定义了一个测试和两个浏览器.

为了只定义浏览器一次并处理测试,我创建了一个repo test-runner,应该添加dev-dependency到需要在给定设备和浏览器上测试的repos.在test-runner得到通过所有需要测试,开始第一个浏览器,运行于该浏览器的测试,一旦所有测试完成后关闭浏览器quit()和浏览器旁边被再次启动和测试.

测试亚军

/index.js

const webdriver = require( 'selenium-webdriver' )

// ---
// default browser configs
// ---
const defaults = {
  "os" : "OS X",
  "os_version" : "Mojave",
  "resolution" : "1024x768",
  "browserstack.user" : "username",
  "browserstack.key" : "key",
  "browserstack.console": "errors",
  "browserstack.local" : "true",
  "project" : "element"
}

// ---
// browsers to test
// ---
const browsers = [
  { …
Run Code Online (Sandbox Code Playgroud)

javascript loops asynchronous node.js node.js-tape

7
推荐指数
1
解决办法
342
查看次数

如何测试节点数据分块功能

我正在开发一个使用节点的项目,我们正努力实现100%的功能覆盖.这是我们没有测试过的唯一功能,它在另一个功能中.

 var userInput = "";
    req.on("data", function(data){
      userInput += data;
    });
Run Code Online (Sandbox Code Playgroud)

你如何测试这个功能?我们尝试从另一个文件导出函数,但没有运气.

我应该提一下,我们正在使用磁带作为测试模块.

javascript testing tdd node.js node.js-tape

6
推荐指数
1
解决办法
78
查看次数

如何使用磁带测试异步抛出错误的函数?

我试图测试此模块(receiver.js)是否抛出错误:

var request = require('request')

module.exports = function(url){
    request({
        url: url,
        method: 'POST'
    }, function(error) {
        if(error){
            throw error
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

使用此测试(test.js):

var test = require('tape')

test('Receiver test', function(t){
    var receiver = require('./receiver')
    t.throws(function(){
        receiver('http://localhost:9999') // dummy url
    }, Error, 'Should throw error with invalid URL')
    t.end()
})
Run Code Online (Sandbox Code Playgroud)

但是磁带在抛出错误之前运行断言,导致以下错误消息:

TAP version 13  
# Receiver test  
not ok 1 Should throw error with invalid URL  
  ---  
    operator: throws  
    expected: |-  
      [Function: Error]  
    actual: |-  
      undefined  
    at: Test.<anonymous> (/path/to/tape-async-error-test/test.js:5:4)  
  ...  
/path/to/receiver.js:9 …
Run Code Online (Sandbox Code Playgroud)

node.js node.js-tape

6
推荐指数
1
解决办法
455
查看次数

有没有办法在磁带上创建setUp和tearDown方法?

我使用磁带在 JavaScript 中进行测试,但在某些情况下,我想设置一些在文件内的所有测试中可用的配置变量。类似于 PhpUnit 中可用的 setUp 和tearDown 方法。这些方法将分别在文件中的每个测试之前和之后执行。

例如:

test("setUp", function(t){
    var person = {name: 'Jose', programmer: true};
});

test("Name isn't undefined", function(){
    t.notEqual(person.name, undefined);
});

test("Is a programmer", function(t){
    t.ok(person.programmer);
});

test("tearDown", function(){
    //Do something else
});
Run Code Online (Sandbox Code Playgroud)

javascript testing unit-testing tap node.js-tape

5
推荐指数
1
解决办法
2392
查看次数

处理磁带测试中的错误?

如果我有一个抛出错误的函数并且我想测试该错误,我会写这样的东西:

test('throws at something that is not a string', t => {
  t.plan(1)
  t.err(loadString(9))
})
Run Code Online (Sandbox Code Playgroud)

但这总是导致执行时来自函数的实际错误:

还有的在not ok 1 no plan foundnot ok 2 no assertions found,这也是奇怪的.我怎样才能确定它实际上没有扔?

testing tap node.js node.js-tape

5
推荐指数
1
解决办法
1248
查看次数

在substack/tape中使用"plan"和"end"的目的是什么?

substack的磁带测试模块允许您使用该plan方法提前指定断言的数量,然后它将自动end为您调用.为什么不放在end测试结束?使用plan和有end什么区别?

javascript testing tdd node.js node.js-tape

5
推荐指数
1
解决办法
573
查看次数

断言抛出磁带 - 节点

所以我试图测试一个函数,它是一个客户端函数(un-finish),这就是它嵌入测试本身的原因(直到我能找到更好的解决方案).

我遇到的问题是当我测试函数是否抛出TypeError时.

我理解问题是因为它正在测试返回值而不是函数本身,我不确定如何解决这个问题.

任何和所有帮助表示赞赏!

胶带


test.js

var test  = require('tape');


test('GenerateRandomNumber Tests', function(assert){  

  /**
   * Generates a random number between the min/max
   * @param {int} the min value 
   * @param {int} the max value 
   * @param {array} list of values already stored
   * @return {mixed} int if success, false if exception thrown
  **/
  var GenerateRandomNumber = function( min, max, tickets ){

    try{

      if(!tickets instanceof Array){
        throw new TypeError();
      }

      min = (min) || 0;
      max = (max) || 200;

      var …
Run Code Online (Sandbox Code Playgroud)

javascript testing assert node.js node.js-tape

5
推荐指数
1
解决办法
2966
查看次数

强制完成rxjs观察者

我有一个rxjs观察者(真的是一个主题)永远地尾随文件,就像tail -f一样.例如,监控日志文件非常棒.

这种"永远"的行为对我的应用来说非常棒,但对于测试来说却很糟糕.目前我的应用程序工作,但我的测试永远挂起

我想强制观察者更改尽早完成,因为我的测试代码知道文件中应该有多少行.我该怎么做呢?

我尝试在我返回的Subject句柄上调用onCompleted但是在那时它基本上被强制转换为观察者并且你不能强制它关闭,错误是:

对象#没有方法'onCompleted'

这是源代码:

function ObserveTail(filename) {

source = new Rx.Subject();

if (fs.existsSync(filename) == false) {
    console.error("file doesn't exist: " + filename);
}

var lineSep = /[\r]{0,1}\n/;
tail = new Tail(filename, lineSep, {}, true);

tail.on("line", function(line) {
        source.onNext(line);
});
tail.on('close', function(data) {
    console.log("tail closed");
    source.onCompleted();
});     
tail.on('error', function(error) {
    console.error(error);
});     

this.source = source;
}           
Run Code Online (Sandbox Code Playgroud)

这里的测试代码无法弄清楚如何强制永远结束(磁带样式测试).注意"ILLEGAL"行:

test('tailing a file works correctly', function(tid) {

var lines = 8;
var i = 0;
var filename = 'tape/tail.json';
var handle …
Run Code Online (Sandbox Code Playgroud)

javascript automated-tests rxjs node.js-tape

5
推荐指数
1
解决办法
2384
查看次数