Tag: unit testing

你如何获得在vuejs组件unit testing中定义的“this”variables

我想在npm脚本中使用mocha-webpack来testing一个vuejs组件。 我在testing中嘲笑这样的vuex商店: const vm = new Vue({ template: '<div><test></test></div>', store: new Vuex.Store(mockedStore), components: { 'test': TestItems } }).$mount() 我在组件上调用一个方法来testing,例如: vm.$options.components.test.methods.foo() 在组件中,我有访问商店的代码,例如: this.$store.commit('bar', data) 问题是,当它到达这一点,我得到这个错误: 'Cannot read property \'commit\' of undefined' undefined undefined 我证实在这方面“这个”是未定义的。 当我运行应用程序时,“this”被定义并且具有“$ store”。 我如何使它在unit testing环境中工作?

Zombie.js错误:超时:没有得到加载在这个页面上的所有资源

我有一个问题,其中Zombie.js抛出一个错误Error: Timeout: did not get to load all resources on this page 。 它总是超级随机的,似乎总是在不同的testing中发生。 我曾经有以下的代码行来防止这个问题。 Browser.waitDuration = '60s'; 问题是最近Stripe.js导致这个问题,我的unit testing花了额外的55秒。 看到这个问题 。 所以Stripebuild议我删除该行。 当然,我的testing开始再次运行得更快。 但是我已经忘记了我添加了这一行来防止这个超时错误。 任何想法如何解决这个问题,同时确保我的unit testing不会花费过长的时间?

用Jasmine和Express嘲笑请求对象

我有一个非常简单的方法: module.exports = { login: function (username, password, req, res) { authModule.check_login({login: username, pass: password}).then(function (user) { req.session.regenerate(function () { req.session.user = username req.session.userID = user.id req.session.fullName = user.fullName req.session.email = user.email res.redirect('/user') }) }).catch(function (err) { res.render('login', { unsuccessful: true }) }) } } 在我的unit testing中,我试图validation这个方法是否正确设置会话variables。 我一直试图通过使用jasmine.createSpy来嘲笑请求对象,但似乎没有工作,例如: describe('user_login.login', function () { it('sets the session […]

node.js – 在mongodbunit testing中应用sinon

我使用node-mongodb-native为mongodb实现了一个模型函数: 'use strict'; const mongo = require('mongodb'); class BlacklistModel { constructor(db, tenant_id, logger) { this._db = db; this._table = 'blacklist_' + tenant_id; this._logger = logger; } create(data) { return new Promise((resolve, reject) => { const options = { unique: true, background: true, w: 1 }; this._db.collection(this._table).ensureIndex({ phone: 1 }, options, (err) => { if (err) […]

需要外部模块作为ES6类实例variables

我有一个ES6类,这取决于一些外部模块的工作。 由于这是一个节点应用程序,我使用CommonJS来要求和加载模块。 然而,这种模块加载使得unit testing变得复杂,这并不是什么秘密。 我当然可以通过构造函数dependency injection所有必需的模块,但是这在dynamictypes语言中感觉很麻烦。 我也不喜欢使用像proxyquire这样的库,因为它膨胀了我的testing代码。 所以我想出了将所需模块存储为实例variables的想法。 例如: const someModule = require('some-module'); class MyClass { constructor() { this.someModule = someModule; } someFunction(value) { return this.someModule.someFunction(value); } } 这样我就可以使用模块加载器加载依赖关系,并在unit testing中仍然监视/存根/模拟它们。 这被认为是不好的做法,或者你可以看到任何重大的缺点?

testing服务器查询/数据库

我有一个应用程序在node.js和swagger查询数据的查询,我能够运行基本的unit testing用例。 当我需要testing命中looker(在其他服务器上运行)的查询时,我必须启动节点服务,然后查询looker。 在我的本地机器中,我能够在一个terminal选项卡(npm app)中启动服务,并从其他选项卡(npm test)启动testing用例,但是当我将它部署到GitHub存储库时,我无法做同样的事情。有任何其他的方式可以通过它可以做或任何我可以嘲笑looker调用(这是api调用),并运行它,所以我不必在存储库中启动我的服务。

如何通过使用笑话嘲笑超级模块?

伙计们! 我正在使用Jest和Supertest来testing我的节点服务器代码。 这是我的server.js // server.js const config = require('./lib/config') … const app = new koa() … module.exports = app 我想在使用Supertest的时候模拟config.js ,这里是我的server.test.js // server.test.js const supertest = require('supertest-as-promised') describe('xxxxxx', ()=>{ let app,server beforeEach(()=>{ jest.mock('lib/config',()=>({ uri: '/path', apiPrefix: '/prefix' })) app = require('server') }) afterEach(()=>{ server && server.close() app=null server=null }) it('should success', async ()=>{ server || […]

节点/ Sinon – 库或模块中的存根function(node-postgres)

我试图testing一个函数,查询数据库使用PG模块,这里是我如何使用它: const { Pool } = require('pg'); const { liveDB } = require('../config/db'); const pool = new Pool(liveDB); exports.query = async (query) => { const client = await pool.connect(); try { var result = await client.query(query); console.log('result from db.query', result); return result; } catch (err) { console.log('ERROR in db.query') console.error(err); throw err; } finally { […]

Sinon – Stub模块函数,并且不dependency injection地进行testing

我有一个代理模块,将function调用转发到服务。 我想testing是否调用服务函数,当这个代理模块中的函数被调用。 这是代理模块: const payService = require('../services/pay') const walletService = require('../services/wallet') const entity = { chargeCard: payService.payByCardToken, // … some other fn } module.exports = entity 基于这个例子和这个回应 ,我试图存根需要的模块“payService”: const expect = require('expect.js') const sinon = require('sinon') const entity = require('../entity') const payService = require('../../services/pay') describe('Payment entity,', () => { it('should proxy functions to each service', […]

如何重置/恢复到原来的产卵

我正在尝试使用模拟生成模块来模拟生成过程。 随后的testing失败了,因为我无法恢复模拟。 我试着用mySpawn.resotre()但没有这样的function。 我检查了代码仍然无法弄清楚。 任何人都可以请帮助我。