Tag: 摩卡

如何存储与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 […]

摩卡,CoffeeScript,ZombieJS,Tim​​out?

我遇到了一个奇怪的问题,我不知道为什么这样做。 我使用express-coffeescript作为框架,用于testing的应用程序,chai和zombiejs的mochatesting。 request = require 'request' Browser = require 'zombie' assert = require 'assert' chai = require 'chai' should = require 'should' expect = chai.expect chai.should browser = new Browser() describe 'GET /login', -> it 'should login a user successfully', (done) -> browser.on "error", -> console.log "Error" browser.visit "http://localhost/test-laravel/public/login", (browser), -> browser.fill "username", "TheHydroImpulse" browser.fill […]

代码覆盖率在unit testing

我试图得到我的unit testing不包括的代码行。 我用摩卡进行unit testing,它提供了一个记者“json-cov”,它应该报告我没有执行的行数。 我有两个文件,第一个(foo.js): module.exports = function () { for (var result = 0, i = 0; i < arguments.length; i++) { result += arguments[i]; } return result; } 和第二个(test.js): var expect = require('expect.js'), jsc = require('jscoverage'), //foo = require('./foo.js'); foo = jsc.require(module, './foo.js'); describe('foo', function () { it('should add all arguments', function () […]

使用摩卡与TDD接口,ReferenceError

我试图通过摩卡和柴进入unit testing。 我对Python内置的unit testing框架比较熟悉,所以我使用了Mocha的TD界面和chai的TDD风格的断言。 我遇到的问题是摩卡的tdd setupfunction。 它正在运行,但是我在其中声明的variables在testing中是undefined的。 这是我的代码: test.js var assert = require('chai').assert; suite('Testing unit testing === testception', function(){ setup(function(){ // setup function, yu no define variables? // these work if I move them into the individual tests, // but that is not what I want 🙁 var foo = 'bar'; }); suite('Chai tdd style […]

摩卡没有显示所有的testing

我有一些摩卡unit testing,当我运行这些只有2/3的testing显示。 我正在使用斑点记者,并通过运行我的testing。 这是我的makefile: REPORTER = list TESTS = test/*.js test/**/*.js test/**/**/*.js REQUIRE = should test: @NODE_ENV=test NODE_PATH=./app/controllers ./node_modules/.bin/mocha \ –reporter $(REPORTER) \ –ui tdd \ –require $(REQUIRE) \ -G \ $(TESTS) test-ci: @NODE_ENV=ci NODE_PATH=./app/controllers ./node_modules/.bin/mocha \ –reporter $(REPORTER) \ –ui tdd \ –require $(REQUIRE) \ $(TESTS) start: NODE_PATH=./app/controllers NODE_ENV=development nodemon server.js .PHONY: test 和test/test.js […]