Moq tips 1 - learn how to write unit tests from ChatGPT

When should I use mockObject.Reset() and when should I use mockObject.Invocations.Clear()?

In the context of using a mocking framework like Moq in C# for unit testing, the choice between mockObject.Reset() and mockObject.Invocations.Clear() depends on what you want to achieve.

  1. mockObject.Reset():

    • This is specific to the Moq library.
    • It resets the mock object, removing any setups or custom behavior you might have defined for that mock.
    • It does not clear recorded invocations; you can still access them after calling Reset().

    Example:

    var mock = new Mock<MyClass>();
    mock.Setup(x => x.MyMethod()).Returns("Original");
       
    // ... code using the mock ...
       
    // Reset the mock, removing setups
    mock.Reset();
       
    // Now, if you call the method, it won't use the previous setup
    var result = mock.Object.MyMethod();
    
  2. mockObject.Invocations.Clear():

    • This clears the recorded invocations on the mock object.
    • It doesn't affect setups or custom behavior. It just removes the history of invocations.
    • This can be useful when you want to verify interactions or check the number of invocations without interference from previous test runs.

    Example:

   var mock = new Mock<MyClass>();
   mock.Setup(x => x.MyMethod()).Returns("Original");
   
   // ... code using the mock ...
   
   // Clear recorded invocations
   mock.Invocations.Clear();
   
   // Now, if you verify invocations, it won't consider previous calls
   mock.Verify(x => x.MyMethod(), Times.Never());

In summary:

  • Use mockObject.Reset() when you want to clear setups and start fresh with the mock.
  • Use mockObject.Invocations.Clear() when you want to clear the history of invocations, but keep the existing setups and behaviors.

If I set up a method with the same parameters multiple times, the last setup will take effect, right?

In most mocking frameworks, including Moq for C#, the answer is YES. Each new setup for the same method and parameters overrides any previous setups.

Here's an example using Moq:


// Setting up the method with the same parameters but different returns
mock.Setup(x => x.MyMethod()).Returns("FirstSetup");
mock.Setup(x => x.MyMethod()).Returns("SecondSetup");

// Now, if you call the method, it will return "SecondSetup"
var result = mock.Object.MyMethod();

A neat way to remove trailing zeros from a decimal number in C#

We can get unexpected trailing zeros when we serialzie an object with decimal properties, normally it will not hurt. However, it does hurt when we want to compare two objects by serializing them to JSON string. I tried a few solutions and finally find the following one is the best.

public static decimal Normalize(this decimal value)
{
    return value/1.000000000000000000000000000000000m;
}

Reference

Clear nuget cache

cat ~/bin/clear-nuget-cache
nuget locals all -clear

Reference

读书笔记:两访中国茶乡(上下册

2023-11-23 19:16:28。 犁看起来很原始,但是却很管用,对于现阶段的中国人来说,公牛或水牛拖拉的小犁,比我们国家更先进的工具还要适用一些。水车则轻而易举地就可以把很多水汲引到高处,然后迅速流进各处的稻田,我经常长时间地站在一旁看着,赞叹这种装置的简单实用。

2023-11-24 09:46:38。 我住的这所房子密闭性太差了,冷风从各处缝隙中钻进来。窗户很大,不像英国装的是玻璃,这儿都是纸窗,而且很多地方连纸窗都没有,大大地敞开着口子。 注: 我斗胆猜一下,这是因为中国人安居的机会太少,太多时候都会优先选择权宜之计,久而久之,凑合精神就写到了中国人的基因里。

2023-11-24 15:07:45。 鱼鹰的脖子上套了一个小线圈,防止它把叼着的鱼吞下去,要非常小心这个线圈,不能让它松开,滑落到脖子下面去,否则鱼鹰便容易有哽咽窒息的危险。

2023-11-24 15:21:24。 房间里冷得让人难受,我们常常在早上醒来时发现,自己躺在床上,全身都已被雨水打湿 ,如果下雪的话,雪花就从窗户中飘进来,落在地板上,一环一环的,像花圏一样。 注: 一个不以苦为苦的人。

2023-11-24 15:23:29。 一到晚上,上海城的城门就都关闭了,而且郊区各条里弄之间的交通也被一重又一重大大小小的门给切断了,这些门大概在晚上十点或十一点就紧紧关闭了。这显然是一种古代习俗,用以防止来自敌人或作乱者的突然袭击,却在和平年代仍然沿用下来。 注: 我们中国人很擅长把临时政策变成永久政策。

2023-11-24 20:00:08 众所周知,上海已经成为我们英国棉纺制品的一大市场,我敢断定,几年以后,上海不仅会成为广州的有力竞争者,而且将成为一个无比重要的城市。此外,这儿的气候也更宜人;人们更守规矩;外国人受到尊重,可以随处走动、骑马,只要能在当天赶回来就行。应当承认,就居住而言,比起南方各地,上海也有很多优势。

2023-11-25 15:26:35 置身于这样一种场景当中,又是在一个陌生的国度,远离自己的家乡与朋友,很容易让人在头脑中生出一些终生难忘的感受。在这个夜晚,我与和尚们一起呆在天童寺里,那些在我脑中生出的莫名情愫,我想我一辈子也忘不了

2023-11-25 23:45:13 确实不假,输入和吸食鸦片,是被中国政府明令禁止的,但这种禁止,只是一种空言,并没有什么实际的意义。

2023-11-26 06:49:43 有一点应该大书特书,就我的经历而言,尽管每天有数百人趁我不在来参观我的小船,我在这个地方却从来没有失窃过任何东西。

2023-11-26 07:42:02 中国北方省份的农民们,他们通过各种办法来尽力延长生长季节,以便他们从肥沃的土地中多收获一些东西。

2023-11-27 15:29:16 不管有钱还是没钱,人们通常要把死者的遗骸在家中摆放很长一段时间。我看到了大量这样停放在家中的棺材,从我观察到的情形来看,许多棺材已经摆放好些年了。这些棺材用料厚实,非常坚固,接缝处仔细做过密固处理,所以尸体腐化的时候,并不会有臭味逸出来。 注: 这个中国通还是不够通。这棺材其实是家里的老人给自己预备的,尚未使用的。

2023-11-27 15:53:12 在旅行当中,中国人除了吃饭、抽烟和睡觉以外,很少做别的事情,在我游历中国的这整个期间,我不记得自己看到过中国人在旅途中阅读。 注: 今天的中国人里,会在旅行中阅读的人当然比那时候会多得多,然而不阅读的人依然更多。我真诚的希望,我们中国人,不论年龄,财富,都能爱上阅读,随时随地看到捧卷的人。

2023-11-27 18:31:55 我们现在前行的速度非常慢,因为水流太湍急了。不时出现的险滩,常常使得我们花费好几小时才能溯流而上。十五个纤夫,用长长地纤绳系住我们船上的桅杆,在岸上拉着船前进,还有五、六个船员拿着长长的竹篙,奋力地撑着船。没有什么比这更能展现中国人那不屈不挠的毅力。当打量着像这样的一条河时,也许有人觉得它根本就不适合航行,但即使是这样的困难条件,人们也还是凭着艰辛的劳动和不屈的毅力把它克服掉了。

2023-11-30 16:03:02 庙里的和尚把我送到大门口,用中国的方式和我道了别。在我们在山里钻来钻去的时候,我看到采茶的人们正在山坡上的茶园里忙着采茶,他们似乎正在进行一场快乐而又心满意足的比赛,互相开着玩笑,到处都充满快乐的笑声,还有一些人在唱歌,就像庙里那些古树上的鸟儿一样高兴。

2023-11-30 16:08:54 这些树苗和其它的植物一样,它们的根部都被小心地用潮湿的苔藓包裹起来,然后外面再裹上一层油纸,用上油纸是为了让它们避开阳光,也避开中国人刺探的目光,

2023-11-30 16:22:23 我们从山脚向上走了一段距离以后,山路开始变得非常陡峭,我只好从轿子里出来步行。有那么一两次,我远远地走在仆人们前面,一个人走在那似乎无比荒凉、寂寞的道路上,我自己都几乎有些害怕了,好像随时都可能有老虎或其它肉食类动物从密林中窜出来咬人。

2023-11-30 16:21:35 路上我们看到了一种非常漂亮的红嘴蓝雀。这种鸟很少有长到像英国雀鸟那么大的,通体是美丽的淡蓝色,尾巴上几根长长的羽毛,羽尖则是白色的。它们通常都是十只或者十二只一群,当它们在山谷中掠过,翅翼张开的时候,看上去真是非常美。我们还看到了几种松鸡,显然是些不为人知的新品种。野鸡、鹧鸪以及啄木鸟很多,也很驯顺。似乎没有什么猎鸟的中国人来打搅它们。

2023-11-30 17:11:04 在中国,劳动力很便宜,茶园里的工人,每天的工钱不过两、三便士。这点工钱,在美国和澳大利亚雇得到人吗?

2023-11-30 17:11:34 茶树是一种很美的常绿灌木,每到冬春时节,也就是山茶花开花的时候,白色的单瓣茶花也都争相盛开。但人们种植茶树不是为了欣赏它的花卉,尽管茶花之美也确实值得欣赏,而是因为茶树能够给人们提供自己喜爱的茶叶。

2023-11-30 17:13:11 我的轿夫们,收到了工钱,现在都坐在旁边一间屋子的桌边,全神贯注地投入到赌博游戏中去了。 注: 哎!拿辛苦赚来的钱去赌博。

2023-11-30 17:24:57 在寺庙下面一英里左右的地方,我注意到有一家造纸厂,用竹子造纸。田野上立了几个大大的水箱,用来浸泡毛竹竿子。这些毛竹似乎要在石灰水中浸泡上一段较长的时间,然后取出放到石头上锤打,直到它们变得非常柔软,或者说,直到把竹竿中那些较硬的物质去除干净为止。

多看笔记 来自多看 for iOS

读书笔记:如何学习

作者: [美]本尼迪克特·凯里

引言 为什么学习最好的不是最用功的学生

Page 21 @ 29 October 2023 04:35:32 PM

跟很多人一样,我从小就相信,学习靠的全是自律:沿着一块巨大的知识岩石,你要努力地、孤独地往上攀登,直到攀上那些聪明能干的同学早已到达的岩顶。我攀登的动力,与其说是源于好奇心和探索心,还不如说是因为惧怕跌落下来更为确切。

Page 25 @ 29 October 2023 04:37:01 PM

科学家得出的结论实在古怪。比如,分心反而有助于学习,打个盹儿也有助于学习,在某门课程将要学完之前半途而废,其实并不是坏事,因为这种快要完成的东西与已经彻底完成的东西相比,反而会在人的记忆中逗留得更为长久,还有,在开始学习新东西前先测试一下,会使你在随后的学习中事半功倍,等等。

Page 31 @ 29 October 2023 04:40:33 PM

阅读障碍能提高人对图案的辨识能力,接受双语教育的孩子有更强的学习能力,遇到数学就头疼其实是一种脑功能紊乱,游戏是最好的学习工具,音乐能增强一个人在科学方面的才能

大脑是如何编故事的

Page 69 @ 29 October 2023 07:54:32 PM

左脑能根据它所看到的东西编造出一套有条理的说法来

记忆的“逆袭”

Page 107 @ 30 October 2023 09:48:22 PM

“我们不仅会忘记曾经一度记得的东西,”他写道,“我们也同样会记起曾经一度被遗忘的东西。”

遗忘式学习

Page 133 @ 30 October 2023 10:03:25 PM

记忆是不会“丢失”的,不会像我们以为的那样越变越淡,直至踪迹全无。准确地说,“丢失”了的其实只是我们一时无法提取出来的记忆而已,它的提取能力在当下很低,低到几乎为零。

…more