Articles of 摩卡

有没有更好的方式在摩卡书写testing语句?

在下面的代码中,我试图确保在用户单击链接之后呈现某个页面。 我不知道这是否是正确的方式来做出这个断言,或者如果有更好的方法来写它,也许与另一个内在的声明。 这个testing能以任何方式改进吗? describe('User visits the main page and clicks the Contact link', function() { const browser = new Browser(); it('should render ok', function(done) { browser.visit( "http://localhost:3000", function() { browser.clickLink("Contact", function() { browser.assert.text('title', 'Contact'); done(); }); }); }); });

摩卡咖啡unit testing中的error handling

我有摩卡testing。 我会尽可能简化。 我想知道我应该如何处理摩卡testing中的错误。 例如,如果getName中有错误,我该怎么办? 我怎样才能抛出一个错误? 或者我应该使用done(error)作为; it('trial', function(done) { getName(function (name, err) { if(err){ done(err); //what should I do here? }else{ console.log(name); } }); });

柴应该是不确定的

我已经安装了摩卡和柴。 在我的unit testing中: import {expect, should} from "chai"; describe("array", function () { it("has length of 1", function (done) { var arr = ["B"]; expect(arr).have.lengthOf(1); arr.should.have.lengthOf(1); }); }); expect按预期工作,但should是不确定的。 为什么?

用Mocha和SinontestingMailgun .send()方法

我正在尝试编写一个快速中间件函数的unit testing,通过ping Mailgun API来发送电子邮件。 module.exports = { sendEmail: function (req, res) { let reqBody = req.body; let to = reqBody.to; let from = reqBody.from; let subject = reqBody.subject; let emailBody = reqBody.body; let data = { from: from, to: to, subject: subject, text: emailBody }; mailgun.messages().send(data, function (error, body) { if (error) { res.status(400).json(error); return; […]

如何存储与sinon的asynchronous数据库调用

我想unit testing这个类的getAll方法: module.exports = class BookController { static async getAll() { return await Book.query() .eager('reviews'); } }; 本书是一个异议模型。 我想testing它是我想用我自己的数据伪造Book.query().eager()的响应,因为我永远不能validation数据库中的内容。 为了成为一个真正的unit testing,我应该只是testingBook.query()方法被调用? 或者我应该testing返回的数据,因为这是getAll()方法的契约? 我真的不确定我应该如何把这一点弄糟。

testing一个then()块内的代码

所以我使用React和Mocha / Chai / Enzyme / Sinon进行testing。 我有很多asynchronous调用在我的组件,我想testing后来的代码,但不知道如何。 所以例如这是我的AddToCart组件内的reserveSession()方法: reserveSession() { this.props.reserveExam(id).then((json) => { // Code I want to test }).catch(…); } 这是我testing的当前设置: describe('AddToCartButton', () => { beforeEach(() => { props = { // set all props to empty or () => null } wrapper = mount(<AddToCartButton {…props} />) }); }); 所以我发现到目前为止,当我嘲笑this.props.reserveExam在每个之前,因为它不曾调用实际的function,它永远不会调用当时的代码,但如果我只是调用该方法不明白那是什么。 任何想法如何testing? 谢谢!

为什么新版本的mocha在运行npmtesting时不能输出testing细节?

我有我的项目指定下列devDependencies : "mocha": "^3.4.2", "mocha-sinon": "^2.0.0", "sinon": "^2.3.7", 当我用这些运行我的testing时,我只得到最小的输出: $ npm test Basic test example. simple test examples 当我将摩卡依赖关系降级到这些版本时: "mocha": "^3.2.0", "mocha-sinon": "^1.1.6", "sinon": "^1.17.7", 我得到了预期的详细输出: $ npm test Basic test example. simple test examples – expects more tests in future. 2 passing (27ms) 1 pending 其他一切都是一样的。 我已经摆弄了一些没有效果的mocha命令行选项。 如何获得新版本的详细输出?

为什么Mocha的`before()`函数传递是否带参数?

在我的describe有这样的代码: before(a) 。 当看起来像这样: function a() { return chai.request(app) … .then(res => { res.blah.should.blah; return Promise.resolve(); }); } …一切都很好(这是一个非常快的电话)。 但是,当我做ainputvariables: function a(dummy, my_var) { return chai.request(app) … // use my_var here .then(res => { res.blah.should.blah; console.log("finished!"); return Promise.resolve(); }); } 承诺永远不会解决。 两点意见: finished! 确实得到正确的输出(立即) dummy填充。 这是填充这个: function (err) { if (err instanceof Error || toString.call(err) […]

使用嘲笑模拟fs模块

在我的nodejs服务器上,我想嘲笑我的testing与摩卡。 我最终使用嘲笑,但我真的误解了一个概念。 在我的testing中(我也使用Typescript): // mock for fs var fsMock = { readdir: (path: string) => { return { err: undefined, files: [] } }, writeFile: (path: string, content: string, encoding: string) => { return { err: undefined } }, readFileSync: (path: string, encoding: string) => { return "lol" } }; Mockery.registerMock('fs', fsMock); beforeEach((done) => { […]

尝试设置状态码时,res.status不是一个函数

当试图满足由所提供的unit testing设置的规范时,当试图返回一个方法的状态代码,我碰到 TypeError:res.status不是一个函数 在API实现中运行函数createUser时。 它发生在每个方法调用中,比如res.send,res.sendStatus等。即使我将res.status()添加到testing中来设置它,它也会返回相同的错误。 apiTests.js let chai = require('chai'); let expect = chai.expect; let sinon = require('sinon'); let sinonChai = require('sinon-chai'); chai.use(sinonChai); let model = require('../tron_model.js'); // for stubbing only let api = require('../tron_api.js'); describe('API', function() { describe('creating users', function() { it('should return 201 on creating user', function () { let mockModel = sinon.stub(new […]