使用粉笔我已经编写了一个用于打印彩色文本的小型控制台程序,我使用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.exe和Git 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中这是有效的,即文本是黄色的!
所以我假设mintty和npm之间的交互一定存在问题.我可以得到甚至彩色文本npm run example的mintty?
我们假设我有接口
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)?
我已经开始在我的Windows机器上开发一个Web应用程序项目,我使用npm,bower和nodejs 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控制台窗口拥有我的特定标题.我怎样才能做到这一点?