小编Des*_*sty的帖子

如果在Git bash(mintty)中使用npm脚本,则没有控制台颜色

介绍

使用粉笔我已经编写了一个用于打印彩色文本的小型控制台程序,我使用NodeJS执行:

console.log(require('chalk').yellow('yellow text'));
Run Code Online (Sandbox Code Playgroud)

程序以黄色打印字符串"黄色文本".如果我直接用节点执行脚本,它输出:

$ node test.js
yellow text
Run Code Online (Sandbox Code Playgroud)

(文本确实是黄色的).

这与我执行程序的控制台无关.我尝试了Windows cmd.exeGit bash(mintty).

问题

如果我将我的程序包含在npm package.json脚本中,例如使用

...

"scripts": {
  "example": "node test.js"
}

...
Run Code Online (Sandbox Code Playgroud)

并在执行它mintty

$ npm run example

> exampleproject@0.0.1 example D:\exampleproject
> node test.js

yellow text
Run Code Online (Sandbox Code Playgroud)

文本实际上不是黄色,而是控制台的默认颜色.但在Windows cmd.exe中这是有效的,即文本黄色的!

所以我假设minttynpm之间的交互一定存在问题.我可以得到甚至彩色文本npm run examplemintty

二手版本

  • Windows 7 SP1 …

windows git node.js npm mintty

16
推荐指数
3
解决办法
5851
查看次数

使用Moq同样设置模拟的所有方法

我们假设我有接口

public interface A {
  int Foo1();

  int Foo2();

  int Foo3();
}
Run Code Online (Sandbox Code Playgroud)

和一个模拟(使用Moq)的测试方法

Mock<A> mock = new Mock<A>();
Run Code Online (Sandbox Code Playgroud)

现在基本上有两种测试方案:

场景1

如果接口实现在任何方法上抛出特定异常,我想测试我的测试系统会做什么.所以我想设置所有方法来抛出相同的异常,如

mock.Setup(x => x.Foo1()).Throws(new Exception());
mock.Setup(x => x.Foo2()).Throws(new Exception());
mock.Setup(x => x.Foo3()).Throws(new Exception());
Run Code Online (Sandbox Code Playgroud)

情景2

如果方法返回任何数字,我想测试我的测试系统会做什么.所以我可以想到设置模拟就好

mock.Setup(x => x.Foo1()).Returns(1);
mock.Setup(x => x.Foo2()).Returns(1);
mock.Setup(x => x.Foo3()).Returns(1);
Run Code Online (Sandbox Code Playgroud)

原因: 我对被测系统进行了许多不同的单元测试.其中一些是对业务逻辑的测试,它会产生差异,例如返回什么值.但有些只是对一般行为的小测试,例如,如果被测系统抛出一个异常,如果其中一个使用的组件抛出一个异常.或者相反,如果所有组件都按预期运行,则被测系统不会抛出异常.对于这些小测试,我现在正在使用上面的代码.

问题: 是否有更聪明的方法以相同的方式初始化模拟的所有(匹配)方法?就像是

mock.SetupAll().Throws(new Exception());
Run Code Online (Sandbox Code Playgroud)

要么

mock.SetupAll<int>().Returns(1);
Run Code Online (Sandbox Code Playgroud)

(这意味着:设置那些返回类型为的方法int)?

.net unit-testing moq

8
推荐指数
1
解决办法
4881
查看次数

在npm运行时设置Windows控制台的标题是否很热?

我已经开始在我的Windows机器上开发一个Web应用程序项目,我使用npm,bowernodejs HTTP服务器.

为了便于启动HTTP服务器,我创建了批处理文件:

@echo off
title HTTP Server
npm start
Run Code Online (Sandbox Code Playgroud)

npm start开始了http-server.为此,我在以下条目packages.json:

"start": "http-server -a localhost -p 8000 -c-1"
Run Code Online (Sandbox Code Playgroud)

但是,当我双击批处理时,打开控制台窗口的标题首先更改为npm然后更改为bower.因此它在npm/ bower正在运行时忽略了我自己的标题.

由于我打开了很多控制台窗口,我想强制HTTP server控制台窗口拥有我的特定标题.我怎样才能做到这一点?

windows batch-file node.js npm

6
推荐指数
2
解决办法
2372
查看次数

标签 统计

node.js ×2

npm ×2

windows ×2

.net ×1

batch-file ×1

git ×1

mintty ×1

moq ×1

unit-testing ×1