Ruby Mocha如何存根一个嵌套哈希?
我这里有一个需要使用 Mocha 模拟的方法,但目前我不知道如何在这里模拟嵌套哈希. Products.new(:A => "aa", :B => "bb").containers['container_A'].elements['element_b'] 到目前为止,我知道如何存根 Products.new(:A => "aa", :B => "bb"),但不知道它后面的哈希部分. 提前致谢. 解决方案 hash/OpenStruct呢? require 'ostruct' product.expects(:containers). returns('container_A' => OpenStruct.new(:elements => {'element_b' => 'expected_value'})) puts product.containers['container_A'].elements['element_b'] # => e
98 2022-08-15
编程技术问答社区
使用摩卡的Spectron不能按预期工作
我已经通过 spectron 工具使用 mocha 为我的电子应用程序编写了一个登录测试用例. 我面临以下问题. 有时我的脚本运行良好,我能够将用户名和密码值传递给 Web 元素并执行登录. 有时我可以看到测试用例已通过,但值未传递给用户名和密码 Web 元素. 有一天我试图清除我的系统临时文件并执行“npm test"命令和正确执行的脚本,但第二天又遇到了与第 1 点中提到的相同的问题.2. 你们能否帮我解决这个问题,或者如果我缺少任何所需的包. 我的 package.json 文件 { "name": "new_spectron_module", "version": "1.0.0", "description": "", "main": "index.js", "directories": { "test": "test" }, "dependencies": { "npm": "^6.5.0", "
194 2022-07-28
编程技术问答社区
Mocha只运行一个测试
我有一个想要用 mocha 测试的sails.js 应用程序,在我的测试文件夹中我有 2 个测试,但是当我运行 mocha 时只有一个测试被执行. Test1.js var request = require('supertest'); describe.only('UserController', function() { describe('#login()', function() { it('should redirect to /mypage', function (done) { done(); }); }); }); Test2.js describe.only('UsersModel', function() { describe('#find()', function() { it('should check find function', function (done) { done();
210 2022-07-28
编程技术问答社区
在mongoose模型和express路线上运行mocha测试时超时了
我在为我的 Mongoose 模型和我的 express 应用(路线)编写测试时遇到问题 我有一个非常简单的 app.js 文件: var env = process.env.NODE_ENV || 'development', express = require('express'), config = require('./config/config')[env], http = require('http'), mongoose = require('mongoose'); // Bootstrap db connection mongoose.connect(config.db) // Bootstrap models var models_path = __dirname + '/app/model'; fs.readdirSync(models_path).forEach(function(file) { if (~file
140 2022-07-28
编程技术问答社区
使用serverless-mocha-plugin来测试动态端点
我正在使用无服务器框架在 NodeJS 中创建一个 API 应用程序.我已经安装了 serverless-mocha-plugin 并正在尝试为我的功能创建一些单元测试. 在我的 serverless.yml 文件中,我有以下端点: ... equipmentGetAll: handler: ./api/equipment/equipment.getAll events: - http: path: equipment method: get cors: true equipmentGetOne: handler: ./api/equipment/equipment.getOne events: - http: path: equipment/{po_number} method: get cors: true ... 在测试 getAll 端点时,我使用以下测试成功通过.我已通过
164 2022-07-28
编程技术问答社区
如何在服务器上创建Firebase令牌以用于单元测试?
我需要使用节点对 Firebase 用户进行身份验证,以便测试一些服务器端方法.对于每个受保护的请求,我使用以下方法验证 Firebase 令牌: firebase.auth().verifyIdToken(firebaseAccessToken).then(function(decodedToken) { // forward request }) 所以在我的测试中,我使用 Firebase 数据库中的 uid 创建了一个令牌 firebase.auth().createCustomToken(uid).then(function(token) { //add to header for requests }) 后来我读到,自定义令牌没有通过 verifyIdToken 方法验证,只有客户端生成的. 我看过这个答案 - firebase 中令牌的服务器端验证 所以我在初始化 json 中添加了 databaseAuthVariableOverri
170 2022-07-28
编程技术问答社区
使用mocha,是否有办法让存根带有许多参数?
假设我有这个类 class Foo def bar(param1=nil, param2=nil, param3=nil) :bar1 if param1 :bar2 if param2 :bar3 if param3 end end 我可以使用以下方法存根整个 bar 方法: Foo.any_instance.expects(:bar).at_least_once.returns(false) 但是,如果我只想在 bar 方法的 param1 为真时存根,我找不到办法: 我也看了with, and has_entry,好像只适用于单个参数. 我期待这样的功能. Foo.any_instance.expects(:bar).with('true',:any,:any).returns(:baz1) Foo.any_instance.expects(:bar).with(any,'some',:any).returns(:ba
86 2022-07-28
编程技术问答社区
"UnhandledPromiseRejectionWarning "错误,即使有catch存在也是如此
所以我有这段代码,createExampleDir还没有实现,所以测试失败: let chai = require('chai'); let expect = chai.expect; let homeDir = require('home-dir'); let lib = require('../lib.js'); chai.use(require('chai-fs')); let dir = homeDir('/example-dir'); describe('lib', () => describe('createExampleDir', () => it('should find ~/example-dir', () => lib.createExampleDir() .then(() => expect(dir).to.be.a.directory()) .catch(() => {throw Error('W
646 2022-07-28
编程技术问答社区
webrtc应用程序的自动测试?
我正在开发一个会议应用程序,详情: 目标:chrome浏览器 服务器:node.js(目前是 windows 环境) 最简单的测试场景是: 打开两个浏览器标签(如果需要打开浏览器) 模拟按钮点击两者. 模拟接受 getUserMedia 请求(最难的部分) 更多仿真内容和读取 JavaScript 变量值并验证它们. 到目前为止,我一直在对所有这些进行手动测试,但认为从长远来看这是不切实际的.我没有做太多的自动化测试(只是一点单元测试).最初,我认为 mocha 可以完成这项工作,但开始认为这还不够. 我需要一些关于实现浏览器启动、标签打开和授予媒体共享权限所需的 tools or alternate test frameworks 的指针. 解决方案 Chrome 有命令行标志,用于跳过 getUserMedia 权限以及使用假设备: --use-fake-ui-for-media-stream(跳过 GUM 权限提示) --u
232 2022-07-28
编程技术问答社区
使用sinon存根ES6超级方法
我在使用 Sinon 存根基类方法时遇到问题.在下面的示例中,我将对基类方法 GetMyDetails 的调用存根,如下所示.我相信有更好的方法. actor = sinon.stub(student.__proto__.__proto__,"GetMyDetails"); 而且 this.Role 的值最终是未定义的. 我在 javascript 中创建了一个简单的类 "use strict"; class Actor { constructor(userName, role) { this.UserName = userName; this.Role = role; } GetMyDetails(query,projection,populate,callback) { let dal = dalFactory.createDAL(this.Role); dal.PromiseFindOneWithProjectionAndPopula
120 2022-07-28
编程技术问答社区
NodeJS未处理PromisejectionWarning
所以,我正在测试一个依赖于事件发射器的组件.为此,我想出了一个使用 Promises 和 Mocha+Chai 的解决方案: it('should transition with the correct event', (done) => { const cFSM = new CharacterFSM({}, emitter, transitions); let timeout = null; let resolved = false; new Promise((resolve, reject) => { emitter.once('action', resolve); emitter.emit('done', {}); timeout = setTimeout(() => { if (!resolved) { reject('Timedout!'); } clearTimeout(timeout); },
8456 2022-07-19
编程技术问答社区
javascript - js单元测试的模块依赖问题
问 题 在js中,a模块依赖b模块运行产生的数据(通过import引入b模块,a模块是一堆函数的集合,不包含数据) 我在单独测试a模块时,如何制造一个mock的b模块数据给a模块同时不改变a模块的代码 (貌似java是有这种测试框架的?就是能用mock模块替代依赖模块?) 目前单元测试用的是mocha+karma,webpack转译es6语法 样例代码 a.js import b from './b' export function search(id) { for(let i in b.data) { if(b.data[i].id === id) { return b.data[i].value } } return -1 } a.test.js import { expect } from 'chai' import { search } from '../s
258 2022-07-19
编程技术问答社区
使用mocha的async 'done'函数和angular'的注入器。
我发现自己无法弄清楚如何将 mocha 的异步完成功能与 angulars 注入器一起使用.我试过这样的东西: describe('myService', function() { beforeEach(module('myModule')); describe('action()', function() { var obj = {}; before(function(done) { obj.done = done; }); it('calls a function async', inject(function(myService) { myService.calledAsync = function() { obj.done() }; myService.acti
252 2022-07-19
编程技术问答社区
在Chai中,assert、expect和should之间有什么区别?
assert、expect和should有什么区别,什么时候用什么? assert.equal(3, '3', '== coerces values to strings'); var foo = 'bar'; expect(foo).to.equal('bar'); foo.should.equal('bar'); 解决方案 差异在那里记录. 这三个接口呈现不同风格的执行断言.最终,他们执行相同的任务.一些用户更喜欢一种风格而不是另一种风格.话虽如此,还有一些技术考虑值得强调: assert 和 expect 接口不修改 Object.prototype,而 should 修改.因此,在您无法或不想更改的环境中,它们是更好的选择Object.prototype. assert 和 expect 接口几乎在任何地方都支持自定义消息.例如: assert.isTrue(foo, "foo should be true"); expect(foo, "foo
332 2022-07-19
编程技术问答社区
node.js - 使用mocha+supertest 测试时在.end 中调用done() 的诡异异常
问 题 测试代码 var utils = require('./utils'); var request = require('supertest'); var should = require('should'); var app = require('../app'); describe('addition', function () { //... previous test it('should return 2 given the url /add/1/1', function (done) { request(app) .get('/add/1/1') .expect(200) .end(function (err, res) { should.not.exist(err); parseFloat(res.text).should.equal(2); done()
238 2022-07-19
编程技术问答社区