Tag: unit testing

在摩卡初始化和实际testing之间共享variables

看样本: var app describe('application', function() { beforeEach(function(done) { app = initialize() }); afterEach(function(done) { app.close(done) }); it('some interaction with app', function () { /// }); }); app是从风格的angular度来看是坏的全局variables,使initialize不那么有用。 有没有更好的方式来分享appvariables?

nodejsunit testing策略:检查一个表是否存在,并包含你期望的数据

我已经成功地testing了使用数据库中数据的所有函数。 当我想检查数据本身时,问题就开始了,如果我的数据库的模式改变了会发生什么? 所有其他unit testing使用DB存根,而不是真实的数据。 我如何检查数据库的模式? 在这里我不能嘲笑它,因为我想检查真正的模式。 编辑:重要的是要注意,上述数据库是第三方之一。 即我已经检查了所有的function与嘲笑,现在我想检查这个DB的acctual模式,只是为了确保有人没有提及没有改变它。

不可变的柴断言错误虽然预期等于结果

我一直在使用节点/ redux,我有以下testing与柴: AssertionError: expected 'Map { "winos": List [ Map { "id": 1, "x": 1, "y": 1, "movable": false }, Map { "id": 2, "x": 2, "y": 2, "movable": false }, Map { "id": 5, "x": 5, "y": 5, "movable": false } ] }' to equal 'Map { "winos": List [ Map { "id": 1, […]

如何正确地testing需要newrelic的模块

我正在从一些嘲讽的工作中迁移出一堆unit testing。 当我要求一个需要新代理的模块时: require('newrelic') ,我得到下面的错误: – TypeError: Cannot convert undefined or null to object at Object.<anonymous> (node_modules/newrelic/lib/config.js:165:33) at Runtime._execModule (node_modules/jest-cli/src/Runtime/Runtime.js:261:17) at Object.<anonymous> (node_modules/newrelic/lib/logger.js:18:14) at Object.<anonymous> (node_modules/newrelic/index.js:3:14) 什么是最好的方式来处理模块,像newrelic这个笑话难以嘲笑? 当其他人在他们的堆栈中同时开玩笑和新玩意时,他们做了什么?

Jest JStesting覆盖率数据不会从Codeship发布到代码气候

我有一个基于Node.js的项目,我正在使用Jest进行.jsunit testing。 我将collectCoverageconfiguration设置设置为true并可以在本地开发运行中查看testing覆盖表,以及何时在Codeship中运行构build。 但是,我似乎无法得到testing覆盖率数据在Code Climate中显示的结果。 我将CodeClimate的设置说明中给出的回购令牌保存到Codeship环境variables中,如下所示: CODECLIMATE_REPO_TOKEN=xxxxxxxxxx codeclimate-test-reporter < lcov.info 鉴于在本地,JEST collectCoverage将lcov.info数据文件保存在我的项目根目录下的一个名为coverage的目录中,我也尝试过使用该path的环境variables的变体,例如: CODECLIMATE_REPO_TOKEN=xxxxxxxxxx codeclimate-test-reporter < coverage/lcov.info 对于codeclimate-test-reporter节点模块( npm install -g codeclimate-test-reporter )的npm install -g codeclimate-test-reporter ,我不清楚它应该到哪里去。 我试过把它: 在通用npm install命令之前的Codeshiptesting设置设置命令部分, 在Codeshiptestingpipe道configuration命令部分中, 我也试过在我的package.json中将其作为本地开发依赖项进行安装。 上述尝试结合起来,导致在Code Climate方面看到有关testing覆盖率的任何内容。 作为我所做的最后一点,我没有提交我的本地coverage目录,所以它不包含在我的Codeship版本中。 任何人都可以帮我弄清楚我做错了什么?

如何在nodejs中testing第三方代码?

我目前正在编写一个在私人环境中使用的API。 一些介绍的function是第三方function的promisified版本。 例: 第三方代码: function someFunction(argument, callback) { var command = stuff; return this.exec(command, parse_command(callback)); } 我的代码: function promisifiedFunction() { new Promise(function (resolve, reject) { third-party.someFunction('argument', function (err, status) { if (err) { return reject(new Error("FOO")); } else { return resolve(status.result); } }); }); } 我如何正确地unit testing这些function? (请注意,第三方代码已经过unit testing)

间谍的解构要求的方法

我有一个方法,我input一个解构方法。 我试图窥探这个方法,但仍然遇到错误。 const { addition } = require('./my-math-lib'); const additionSpy = sinon.spy(addition); testMethod.doMath(); expect(additionSpy.calledOnce).to.be.equal(true); 不幸的是,这个unit testing不起作用。 乳清我看着additionSpy对象,我看到notCalled是真的。 如果我将代码更改为 – const mathStuff = require('./my-math-lib'); const additionSpy = sinon.spy(mathStuff, 'addition'); testMethod.doMath(); expect(additionSpy.calledOnce).to.be.equal(true); 这个unit testing会通过。

创build一个unit testing两个检查两个psql模式是否相同

我有一个庞大的数据库模式,有时更新这个项目。 所以我有一个名为schema.sql的文件,它具有当前的模式,还有一个包含我随着时间的推移部署的所有补丁的目录(称为patches/20160710.sql ,带有名为origin.sql的第一个模式的文件)。 如果我进行全新安装,则使用schema.sql ,否则在更新时应用此修补程序。 在更新生产模式之前,我已经在testing服务器上进行testing,而且几乎所有东西都自动完成了。 到目前为止效果很好。 不幸的是,一旦我写了一个不同的东西去schema.sql和补丁。 我的unit testing只对一个新的数据库运行,所以testing没有失败,我发现这个错误只是我在testing服务器上的补丁。 我想编写一个unit testing,它接受schema.sql ,部署它,并将模式与在origin.sql应用的所有修补程序生成的模式进行比较。 我也需要检查一些表具有相同的值。 数据库是postgresql,软件在node.js中。 Gitlab CI使用自定义的Docker镜像来运行testing,所以我真的可以用任何语言来进行testing。 当然,补丁和schema.sql都有相同的数据库名称,所以我想我必须应用schema.sql ,以某种方式转储它,然后删除数据库并从补丁重新创build它,再次转储它并比较结果。 这种方法是否有意义或有更好的方法来实现我在做什么? 如果这是有道理的,转储两个数据库并比较它们的好方法是什么?

摩卡单位testingmongoose模型

我正在努力弄清楚为我的NodeJS应用程序编写这些unit testing的正确(即不是黑客)的方式。 在server.js中,我将mongoose连接到本地主机上运行的数据库:27017。 当我运行我的mochatesting时,我想连接到在localhost:37017上运行的不同 mongoDB实例,以便我不针对活动数据库运行testing。 当我在test.js中需要mongoose并且尝试连接时,mongoose会抛出一个错误,说“尝试打开未closures的连接”。 我已经尝试closurestest.js中的当前连接,但由于某种原因无法正常工作。 我的问题是:什么是正确的方式来连接到一个文件中的testing数据库,但继续让server.js连接到实时数据库? 我的代码如下: // test.js var app = require('../lib/server') // This connects mongoose to a database var assert = require('assert'); var httpstatus = require('http-status'); var superagent = require('superagent'); // Connect to mongoose var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:37017/testDB'); // THIS THROWS ERROR because server.js is connecting to localhost:27017/liveDB // Models […]

unit testing承诺不工作

即时通讯使用摩卡来testing我的API,问题是这个函数是asynchronous和testing套件之前,我从function获得resutls,我怎么能克服这个? 我尝试链接像下面的testing提出了一个错误空的testing套件。 describe("Validations", function () { var validator = require('../utils/validator'); var isValid = null; validator.validateJS() .then(function (args) { isValid = args; }).then(function(){ it("init validations ", function () { expect(isValid).to.equal('valid1'); }); }); }) 我最初的用法就像下面这个,如果是对它的调用,期望里面的答案(isValid)是来自诺言,任何想法? describe("Validations", function () { var validator = require('../utils/validator'); var isValid = null; validator.validateJS() .then(function (args) { isValid = args; }).done(); it("init validations […]