Tag: mocha

使用Mocha和Chai编写testing用例

我有一个简单的函数: var moment = require('moment-timezone'); exports.splitIntoDays = function(from,to) { var timeIntervals = []; var interval = {}; var start = moment(from); var end = moment(to); if(start.isAfter(end)) { throw new Error('From date ('+from+') is after To date ('+to+').Enter a valid date range.'); } var initial = start; console.log("Before loop"+initial.format("YYYY/MM/DD-HH:mm:ss")+" "+initial.diff(end,'hours')); while(end.diff(initial,'hours') > 24) { timeIntervals.push({"from" : […]

节点断言:testing错误消息

使用节点的断言模块如何testing错误消息? throw new Error('Email is required!'); 我正在使用assert.throws来检查是否引发错误: assert.throws(myFunction, Error); 但是这不能提供检查信息的能力。

Should.js – 确定多个对象中的单个字段与单个对象之间的等式

我正在用美妙的Mocha和Should.js来testingapi。 我做一个GET并接收一个对象数组,例如: [{ username: 'boris', something: 123 }, { username: 'jeremy', something: 456 }, { username: 'steven', something: 789 }, { … }, { … }, { … }] 对于每个对象,我想确保用户名值匹配不同对象中的属性: mockUsernames = { a : 'bill', b : 'ben', c : 'boris' }; 你怎么能做到这一点? 作为一个例子,我想要这样的东西: .get() … var someData = res.body; someData.forEach(function (e){ e.username.should.equal(mockUsernames.a || […]

用nock和mocha嘲笑HTTPS

我试图嘲笑一个要求条纹,但我很难。 我在我的摩卡describe块的顶部做了一些简单的事情,看起来像 describe('Billing call', function(){ var api = Nock('https://api.stripe.com').log(console.log); // … down here there's a call that uses a stripe api }); 只是为了看看它是否拦截任何东西。 但事实并非如此。 我找不到任何地方的例子,我恐怕Nock不支持它,在这种情况下,我需要find一个更好的工具。 任何人都可以为我清除这个? 谢谢!

使用selenium webdriverjs运行摩卡testing时不太有用的callstack

在使用JavaScript的selenium webdriver在mocha中运行testing时,调用堆栈并不是很有帮助。 作为一个简单的例子,我使用了以下简单的testing脚本test.js : var webdriver = require('selenium-webdriver'), test = require('selenium-webdriver/testing'); const TIMEOUT = 30000; test.describe('selenium webdriverjs', function () { var driver; this.timeout(TIMEOUT); test.before(function () { driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.firefox()).build(); driver.manage().timeouts().pageLoadTimeout(TIMEOUT); }); test.after(function () { driver.quit(); }); test.it('error stack', function () { driver.get('http://www.google.com'); driver.findElement(webdriver.By.id('doesnotexit')); }); }); (例如)从Gulp运行时,会生成以下错误堆栈: selenium webdriverjs 1) error stack 0 passing (4s) […]

怪异的断言与摩卡/柴和ES6诺言

我面对一个奇怪的行为与ES6承诺和一些摩卡/柴testing。 考虑下面的foo()函数返回一个promise,我想testing两件事情: 它返回一个承诺(所以,一个对象) 它会抛出一个exception(所以,一个对象)的失败。 问题是,下面的testingexpect(..).to.be.an('object')在这两种情况下失败,但types是 object (与typeof检查)。 这是我的代码: var chai = require('chai'); var expect = chai.expect; var foo = function (a, b) { return new Promise(function(resolve, reject) { if (a < b) { resolve(); } else { throw new Error('failed'); } }); } describe('foo function', function () { it('should return a promise', function () { […]

无法使用节点请求模块进行基本的HTTPvalidation

我正在使用mochatesting我的应用程序,我想testing一个HTTP响应头代码,这取决于我通过基本的HTTP身份validation发送给它的凭据。 在客户端,我做了这样的AJAX调用服务器: $.ajax({ type: 'GET', url: url, beforeSend: function(xhr){ xhr.setRequestHeader("Authorization", "Basic " +btoa("username:password") ); }, success:function(rsp){ // do whatever I need; } }); 它完美的作品。 它的凭据是错误的,那么该网站将回应智慧302 在我的testing文件( 摩卡 ),我尝试发送相同的请求,但由于某种原因,它不工作。 这是我尝试的不同方式: it('should return 302 because wrong credentials', function(done){ var auth = "Basic " +new Buffer("username:password").toString('base64'); var options = { url: url, headers: { "Authorization": auth } }; […]

在Mochatesting中,Mongoose索引不会创build一半时间

每当我运行我的摩卡testing,它交替创build索引,而不是创build它。 我认为这不是创build索引的原因,因为testing可能在完成之前就已经运行了,但是因为它交替出现了这样的模式,我不认为是这种情况。 我也认为这可能与我在每次testing开始时丢弃数据库有关,但是不应该以某种方式影响每一个testing。 有问题的索引: submissionSchema.index({ studentID: 1, assignmentID: 1 }, { unique: true }); 要删除数据库的代码: before(function(done){ mongoose.createConnection(require(__dirname + '/../app/config').mongoURL, function(err){ if (err) throw err; mongoose.connection.db.dropDatabase(function(err){ if (err) throw err; done(); }); }); }); 任何想法是什么造成这个?

如何使用文件参数进行摩卡/ chaitesting?

我有一个文件通常在命令行中运行 节点index.js myFile.bmp 我如何开始使用摩卡/ cha进行testing? TIA

Nodejs / Express API简单的Mocha / Chaitesting

我正在尝试为我的API构build一个testing集,这个testing集是用nodejs / express和mocha / chai开发的。 基本上,索引返回一个简单的string,我知道它的工作原理,因为我可以在我的浏览器上看到: router.get('/', function(req, res, next) { res.send('Hello World from Eclipse'); }); 然后我按照这个教程来构build这个testing: var supertest = require("supertest"); var should = require("should"); // This agent refers to PORT where program is runninng. var server = supertest.agent("http://localhost:5000"); // UNIT test begin describe("SAMPLE unit test",function(){ // #1 should return home page it("should return home […]