标签: jasmine-node

使用jasmine-node测试nodejs中的异步mongodb调用

我正在使用jasmine-node对我的nodejs函数运行测试.作为nodejs和mongodb的新手,我遇到的第一件事就是测试一些数据库调用,由于nodejs的异步特性,我立即陷入困境.

我想做的是:

1)添加一个add函数以向mongodb表添加新条目

2)从该函数接收状态字符串以验证操作的状态

以下是我的规范代码.在beforeEach通话中,我初始化数据库.正如您在实现中所看到的,它只被实例化一次,因为它询问它是否已经存在.

var mongo = require('../mongo.js');

describe('mongo', function() {

    // generate a random number in order to test if the written item and the retrieved result match
    var randomNumber = Math.random();

    var item = {
        'cities': {
            'london': randomNumber
        }
    };

    beforeEach(function() {

        mongo.init();

        waitsFor(function() {
            return mongo.getCollection();
        }, "should init the database", 10000);

    });

    it('should return "added" after adding an item to the database', function() {

        var result;

        waitsFor(function() {
            result = …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js jasmine-node

8
推荐指数
2
解决办法
4995
查看次数

自动化Jasmine-Node和express.js

我使用express.js创建了一个简单的Web应用程序,并希望使用jasmine-node进行测试.到目前为止工作正常,但我的问题是我必须每次手动启动服务器,然后才能运行我的测试.

你能帮助我编写一个运行服务器的规范助手(用另一个端口,然后是我的开发端口),仅用于测试然后杀死它吗?

tdd node.js express jasmine jasmine-node

8
推荐指数
1
解决办法
4014
查看次数

jasmine-node done未定义

一直在尝试一个简单的异步测试.npm install -g jasmine-node然后安装了jasmine-node 编写了一个简单的模块并进行测试.

简单的模块.

// weather.js
exports.get = function(city, callback) {
    callback(city);
};
Run Code Online (Sandbox Code Playgroud)

和测试套件.

// weather-spec.js
var list = require("../modules/weather");

describe("Weather Forecast", function(data) {
    it('should get weather for London,UK', function() {
        list.get('London,UK', function(data) {
            expect(data).toEqual('London,UK');
            done();
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Stacktrace:
    ReferenceError: done is not defined
Run Code Online (Sandbox Code Playgroud)

鉴于这个简单的例子我无法看到我错在哪里.有人可以帮忙吗?

javascript node.js jasmine-node

8
推荐指数
1
解决办法
6194
查看次数

grunt jasmine-node测试运行了两次

我设置了grunt来运行node.js jasmine测试.出于某种原因,使用此配置,结果始终显示为测试的两倍.

这是我的配置:

我正在使用插入咕噜声的茉莉花节点.

/spec/some-spec.js:

var myModule = require('../src/myModule.js');
describe('test', function(){
     it('works', function(done){
         setTimeout(function(){
             expect(1).toBe(1);
             done();
         }, 100);
     });
});
Run Code Online (Sandbox Code Playgroud)

Gruntfile.js:

module.exports = function(grunt) {
    grunt.initConfig({
        jasmine_node: {
            options: {
                forceExit: true
            },
            all: ['spec/']
        }
    });
    grunt.loadNpmTasks('grunt-jasmine-node');
    grunt.registerTask('default', ['jasmine_node']);
};
Run Code Online (Sandbox Code Playgroud)

这导致两个测试运行而不是一个.

> grunt
Running "jasmine_node:all" (jasmine_node) task
..

Finished in 0.216 seconds
2 tests, 2 assertions, 0 failures, 0 skipped
Run Code Online (Sandbox Code Playgroud)

javascript node.js jasmine gruntjs jasmine-node

8
推荐指数
2
解决办法
1918
查看次数

node js单元测试:mocking需要依赖

我在将以下设置的单元测试编写为jira.js文件(在node.js模块中)时遇到问题:

var rest = require('restler'); // https://www.npmjs.com/package/restler

module.exports = function (conf) {
    var exported = {};

    exported.getIssue = function (issueId, done) {
        ...

        rest.get(uri).on('complete', function(data, response) {
        ...
    };

    return exported;
};
Run Code Online (Sandbox Code Playgroud)

现在,我想为我的getIssue函数编写单元测试.'restler'是一个REST客户端,通过它我可以通过我的代码对JIRA API进行REST调用以获取JIRA问题.

因此,为了能够测试createIssue(..),我希望能够在我的Jasmine单元测试中模拟'rest'var.

我该如何模仿这种方法?请给我一些指示,以便我可以继续.我尝试过使用重新布线但是我失败了.

这是我到目前为止无法正常工作(即getIssue方法未定义):

var rewire       = require("rewire");
var EventEmitter = require('events').EventEmitter;
var emitter      = new EventEmitter();
var cfg          = require("../../../config.js").Configuration;
var jiraModule   = rewire("../lib/jira")(cfg);
var sinon        = require("sinon");
var should       = require("should");

// https://github.com/danwrong/restler
var restMock = {
    init : function () {
        console.log('mock initiated'+JSON.stringify(this));

    }, …
Run Code Online (Sandbox Code Playgroud)

javascript mocking node.js sinon jasmine-node

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

量角器,Jasmine和首次停止测试失败

在试图弄清楚如何使某些茉莉花期望语句依赖于先前的期望声明时,我发现在Jasmine 2.3.0之前,没有办法.(请参阅第一次预期失败后停止茉莉花测试)但是,Jasmine 2.3.0添加了一个选项stopSpecOnExpectationFailure,当设置为true时将停止第一次失败的测试.

对此前景感到兴奋,我修改了我的conf.js以包含选项:

/*
 * conf.js
 */
exports.config = {
    framework: 'jasmine',
    specs: ['search-spec.js'],
    useAllAngular2AppRoots: true,
    jasmineNodeOpts: {
        stopSpecOnExpectationFailure: true
    }
};
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用.

在我的测试中,我有:

/**
 * Test option from select element is selected
 */
function verifyOptionSelected(option) {
   var myEl = $('select[value="' + option + '"]';

   expect(myEl.isPresent()).toBe(true, 'Option, ' + option + ', is not a value in the dropdown list. (It might be the text.)');

   expect(myEl.isSelected()).toBe(true, 'Option, ' + option + ', is not selected …
Run Code Online (Sandbox Code Playgroud)

javascript jasmine jasmine-node protractor

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

如何在 Jasmine 中显示通过的测试?

运行时jasmine,它仅.在测试成功时显示点(),在测试失败时仅显示详细信息。

//test.spec.js
describe('jasmine', ()=>{
  it('should show this text', () =>{
  });
})
Run Code Online (Sandbox Code Playgroud)

我的运行命令是:jasmine-node test.spec.js

结果:

.
Finished in 0.003 seconds
1 test, 1 assertion, 0 failures, 0 skipped
Run Code Online (Sandbox Code Playgroud)

如何让jasmine显示这个测试结果像这样jasmine should show this text

javascript unit-testing jasmine jasmine-node

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

如何使用 RequireJS 运行 jasmine-node 测试

如何使用 jasmine-node 和 RequireJS 正确运行 jasmine 测试?

我已经尝试过这样的事情,但不起作用(CoffeeScript):

requirejs = require 'requirejs'
requirejs.config { baseUrl: __dirname + '/../' }

requirejs ['MyClasses', 'FooClass'], (MyClasses, FooClass) ->

  describe "someProp", ->
    it "should be true", ->
      expect(MyClasses.FooClass.someProp).toEqual true
Run Code Online (Sandbox Code Playgroud)

0 秒内完成 0 次测试、0 次断言、0 次失败

我的目标是使用 RequireJS、CoffeeScript 编写模块化类,并且类必须可以使用 jasmine-node(CI 服务器)进行测试。

请问我该怎么做?谢谢!

编辑:

我使用命令执行测试(在带有测试的目录中):

jasmine-node ./
Run Code Online (Sandbox Code Playgroud)

node.js requirejs jasmine-node

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

在不更改数据库的情况下测试POST到API的策略

我正在使用jasmine-node来测试我的API,它对我的​​GET路由非常有用.但是,现在,我需要测试一些POST,但我不确定如何在不更改数据库的情况下进行此操作.

我有一个想法是重置在每个规范结束时我改变的任何值.

这是合理的,还是有更好的方法来测试我的API的POST请求?

javascript http node.js jasmine jasmine-node

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

茉莉花节点的目的是什么?

我可以用jasmine-node或者只是运行我的规格jasmine.他们都运行我的规格.那么,jasmine-node增加什么价值呢?自述文件说:

这个node.js模块在node.js中提供了精彩的Pivotal Lab的jasmine规范框架. https://github.com/mhevery/jasmine-node/blob/master/README.md

我不明白.我的应用程序运行node,我的规格require节点模块..所以当我运行时jasmine,我已经使用了两个nodejasmine.是什么jasmine-node补充的吗?

我特别不是在询问jasmine-node您最喜欢的原因或其他图书馆的建议.我只想知道,目的jasmine-node什么?

javascript node.js jasmine jasmine-node

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