mocha

How does Ruby Mocha stub a nested hash?

丶灬走出姿态 提交于 2020-03-06 08:38:20
问题 I have a method here that needs to be mocked using Mocha, but currently i have no clue how to mock the nested hash here. Products.new(:A => "aa", :B => "bb").containers['container_A'].elements['element_b'] So far, i know how to stub Products.new(:A => "aa", :B => "bb") , but have no idea with the hash part after it. Thanks in advance. 回答1: What about a hash / OpenStruct ? require 'ostruct' product.expects(:containers). returns('container_A' => OpenStruct.new(:elements => {'element_b' =>

How to check the property value after mocking a function : Assertion Error ,mocha

丶灬走出姿态 提交于 2020-03-05 02:13:03
问题 As per suggestion in question enter link description here I mock readFileSync and mocked my outer function now I want to verify if the variables value is set as expected or not file.js const fs1 = require('fs'); let param; module.export = { test, param } function test (outputParam) { param = fs1.readFileSync(outputParam); } I have stubbed this readFileSync and it returns specified file content as shown in the test below When I run the test I want to see the variable param has the file content

How to check the property value after mocking a function : Assertion Error ,mocha

落花浮王杯 提交于 2020-03-05 02:11:50
问题 As per suggestion in question enter link description here I mock readFileSync and mocked my outer function now I want to verify if the variables value is set as expected or not file.js const fs1 = require('fs'); let param; module.export = { test, param } function test (outputParam) { param = fs1.readFileSync(outputParam); } I have stubbed this readFileSync and it returns specified file content as shown in the test below When I run the test I want to see the variable param has the file content

How to check the property value after mocking a function : Assertion Error ,mocha

前提是你 提交于 2020-03-05 02:11:28
问题 As per suggestion in question enter link description here I mock readFileSync and mocked my outer function now I want to verify if the variables value is set as expected or not file.js const fs1 = require('fs'); let param; module.export = { test, param } function test (outputParam) { param = fs1.readFileSync(outputParam); } I have stubbed this readFileSync and it returns specified file content as shown in the test below When I run the test I want to see the variable param has the file content

npm test - Must use import to load ES Module - but I thought I was? (node 12)

空扰寡人 提交于 2020-02-29 06:41:27
问题 My files are all .mjs extension I have fizz_buzz.mjs and test/fizz_buzz.spec.mjs test/fizz_buzz.spec.mjs uses import { fizzBuzz } from '../fizz_buzz' I run npm test and I get > mocha test/**/*.spec.mjs /home/durrantm/Dropbox/90_2019/work/code/js/mocha_chai_bdd_tdd_exercises/node_modules/yargs/yargs.js:1163 else throw err ^ Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/durrantm/Dropbox/90_2019/work/code/js/mocha_chai_bdd_tdd_exercises/test/fizz_buzz.spec .mjs at Object

Cannot find module 'ts-node/register'

半世苍凉 提交于 2020-02-20 06:22:29
问题 I want to use mocha to test my TypeScript/Angular2 project. I tried to use ts-node as described here: npm install -g ts-node but when running mocha --require ts-node/register -t 10000 ./**/*.unit.ts I get an error Cannot find module 'ts-node/register' What am I missing here? 回答1: Since the answer that works for a lot of people appears to be hidden in the comments, I'll post it as an actual answer to the question, now that it appears the question has been reopened. I had this problem as well.

java设计模式-装饰者模式

百般思念 提交于 2020-02-09 05:27:05
这个模式花费了挺长时间,开始有点难理解,其实就是 定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。 设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。 要点: 装饰者与被装饰者拥有共同的超类,继承的目的是继承类型,而不是行为 以点咖啡为例: 我们在点咖啡的时候通常会有这样的情况: 点了不同的咖啡会有不同的价格,此时我们需要一个咖啡的基类,不同的咖啡重写基类的cost()方法来实现自己的价格,但有时候我们点咖啡的时候会需要添加一些额外的调料,这个时候价格就变了,而这些额外的调料现在又是不确定的,如果提供过多的set()和get()方法来进行调料的添加又会出现新的问题,如果后续推出茶,汽水之类的饮料时,我们从基类那里继承过来很多没用的set和get方法 所以在这里我们采用不一样的做法:以饮料为主体,然后在运行时以调料来“装饰”饮料,比如说顾客想要 加摩卡和加奶泡的深培咖啡,那么,要做的是: 1:拿一个深培咖啡对象(DarkRoast) 2:以摩卡(Mocha)对象装饰它 3:以奶泡(Whip)对象装饰它 4:调用cost()方法,并依赖委托

装饰者模式

跟風遠走 提交于 2020-02-09 05:13:08
装饰者模式定义: 装饰者模式动态的将责任附加到对象上,若要扩展对象,装饰者模式提供了比继承更有弹性的替代方案。 装饰者模式类图: 说明: a) ConcreteComponent是我们要动态地加上新行为的对象,它扩展自Component; b) 每个组件都可以单独使用,或者被装饰者包装起来使用; c) 每个装饰者都“有一个”(包装一个)组件,也就是说,装饰者有一个实例变量以保存某个Component的引用; d) Decorator是装饰者共同实现的接口(也可以是抽象类); e) ConcreteDecorator有一个实例变量,可以记录所装饰的事物(装饰者包装的Component); f) 装饰者可以加上新的方法,新行为是通过在旧行为前面或后面做一些计算来添加的。 装饰者模式具体示例: 在购买咖啡时,可以在咖啡中加入各种调料,例如:蒸奶(Steamed Milk)、豆浆(Soy)、摩卡(Mocha)或覆盖奶泡。 咖啡店会根据所加入的调料收取不同的费用,所以咖啡店订单系统必须考虑到这些调料部分。 现在考虑用装饰者模式来完成这个订单系统,以实现饮料结算和描述接口。下图是采用装饰者模式的咖啡订单系统类图: 说明: HouseBlend、DarkRoast、Espresso和Decaf是四个具体的组件,每一个组件代表一种咖啡类型; Milk、Mocha

c++设计模式:装饰者模式(Decorator Pattern)

点点圈 提交于 2020-02-09 00:27:33
定义: 装饰者模式动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 场景: 我们购买咖啡的时候,可以要求在其中加入各种调料,例如:蒸奶、豆浆、摩卡或覆盖奶泡,而咖啡店也会根据所加入的调料收取不同的费用,所以当我们设计订单系统的时候就需要考虑到这些调料部分啦。顾客的需求不一,如果我们针对每种配方都声明一个类得话,系统的维护将会十分头疼。此时装饰者模式就派上用场啦。我们可以根据顾客的需要动态的扩展顾客定制的咖啡,让其加上不同的调料,最终计算出顾客所需缴纳的费用。它的实现有点类似于递归,在实际使用的时候可以慢慢体会。 类图: c++代码如下: 不使用指针版本: #include <iostream>#include <string>using namespace std;class Beverage{public: virtual ~Beverage() {}; virtual string getDescription(); // 必须是虚函数,否则会造成后期使用时描述显示不正确 virtual double cost() = 0;protected: string m_description;};class CondimentDecorator:public Beverage{public: virtual string getDescription()

nodejs的单元测试框架mocha

核能气质少年 提交于 2020-02-06 16:32:39
nodejs的单元测试框架mocha 当我们编写比较复杂的项目时,需要对项目的测试用例进行长期跟踪,对单元模块进行质量控制,对开发成果进行自我检验,那么需要一个好用的工具,自学了一下mocha,这个笔记几乎是照搬官网的英文版进行了自我的一番理解的初步呈现,多以条目为主,还没有时间进一步实践,通过强制写笔记的方式,鞭策自己加深理解,学会分享,提高学习力,我在努力。 1.安装 npm install --global mocha 2.作为项目开发依赖项安装 npm install --save-dev mocha 3.版本注意事项 Mocha v3.0.0 需要npm v2.14.2+ v3.0.0之后,不再依赖字符串匹配来决定执行哪些测试。 .only()可以多次使用来定义要运行的测试子集。 4.编码 可以支持before, after, beforeEach, afterEach 5.test目录 mocha会运行test目录下所有测试,目录名不能修改。 如果要包含子目录用--recursive 6.生成package.json依赖mocha 使用npm init命令生成package.json 7.每个测试一段 it("name", function(){…}) 8.测试原则 一次只测一种情况,测试代码要非常简单cd mocha 9.启动命令 (1).node_modules