我想对我所创建的类进行单元测试,但是这种方法需要先调用另一种方法.例:
// This would work
MyClass myClass1 = new MyClass(mockDevice);
myClass1.Run(myDatastructure);
myClass1.Stop();
// This would throw an InvalidOperationException
MyClass myClass2 = new MyClass(mockDevice);
myClass2.Stop();
Run Code Online (Sandbox Code Playgroud)
Run正在硬件设备上启动操作Stop,当然是尝试停止该操作(发送reset-command并启动timeout-timer).
无论如何,我想测试各种调用的后置条件Stop,但我不想打电话Run,因为我正在测试Stop- 不是Run!我想要这样的东西:
MyClass myClass = new MyClass(mockDevice);
myClass.Stop();
Assert.IsTrue(mockDevice.ResetCalled);
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只看到一个可能的解决方案,那就是创建一个TestableMyClass继承自的方法MyClass,这样就可以MyClass在调用之前设置实例的正确内部状态Stop.这个解决方案的问题是我必须改变我的MyClass实现以保护成员而不是私有成员,我不喜欢为了测试它而不得不改变实现的想法!
我应该使用这个解决方案吗,我的设计中是否有错误,或者有更聪明的方法吗?
我正在阅读Kernighan和Richie的C编程语言中有关数组和指针的章节.
他们给出了一个例子:
/* strlen: return length of string s */
int strlen(char *s)
{
int n;
for (n = 0; *s != '\0'; s++)
n++;
return n;
}
Run Code Online (Sandbox Code Playgroud)
然后说:
"既然s是一个指针,增加它是完全合法的; s++对调用的函数中的字符串没有影响strlen,但只增加了strlen指针的私有副本.这意味着像这样的电话
strlen("hello, world"); /* string constant */
strlen(array); /* char array[100]; */
strlen(ptr); /* char *ptr; */
Run Code Online (Sandbox Code Playgroud)
所有的工作."
除了第一个调用示例之外,我觉得我理解所有这些:为什么或如何将字符串文字"hello, world"视为char *s?这怎么指针?函数是否将此字符串文字指定为其局部变量的值,*s然后s用作数组名称/指针?
我已经有了一个完整的HTML文档$.ajax(),我的.done()回调看起来像这样:
function (data, text_status, jq_xhr) {
var $what_i_want = $(data).find('#what-i-want');
}
Run Code Online (Sandbox Code Playgroud)
where data是一个包含整个格式良好的HTML文档的字符串.此代码永远不会到达.find().
在$(data),我得到:
`Uncaught Error: Syntax error, unrecognized expression: <!DOCTYPE html>`...
Run Code Online (Sandbox Code Playgroud)
事实:
我习惯于jQuery()将许多HTML字符串客观化,所以我很惊讶这不起作用.不可否认,我不记得曾经尝试过整个文件.鉴于错误,我猜,也许,我需要以某种方式逃避这个字符串.但我不确定如何.
顺便说一下,这有效:
var $what_i_want = $('#what-i-want', $.parseHTML(data))
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚为什么第一种方法失败了.
尝试使用Java API for ES 2连接到Elasticsearch 2时出现以下错误.这是代码:
Settings settings = Settings.settingsBuilder().put("cluster.name", Receptor.clusterName).build();
TransportClient transportClient = TransportClient.builder().settings(settings).build();
Client c = null;
try {
c = transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(Receptor.es_ip), 9300));
} catch (UnknownHostException e) {
System.err.println(Util.getTimestampStr() + "UnknownHostException error.");
e.printStackTrace();
}
CreateIndexRequestBuilder createIndexRequestBuilder = c.admin().indices().prepareCreate(indexName);
createIndexRequestBuilder.addMapping(documentName, json);
createIndexRequestBuilder.execute().actionGet();
Run Code Online (Sandbox Code Playgroud)
我能够在transportClient.connectedNodes()上获取我的ES节点,但是当我尝试添加新的映射时,我得到了NoNodeAvailableException异常.此代码适用于以前版本的Elasticsearch.什么是错的?
NoNodeAvailableException[None of the configured nodes are available:
[]] at
org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:280)
at
org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:197)
at
org.elasticsearch.client.transport.support.TransportProxyClient.execute(TransportProxyClient.java:55)
at
org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:272)
at
org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:347)
at
org.elasticsearch.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1177)
at
org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:85)
at
org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:59)
Run Code Online (Sandbox Code Playgroud) 这是我的基类:
abstract public class CPU extends GameObject {
protected float shiftX;
protected float shiftY;
public CPU(float x, float y) {
super(x, y);
}
Run Code Online (Sandbox Code Playgroud)
这是它的一个子类:
public class Beam extends CPU {
public Beam(float x, float y, float shiftX, float shiftY, int beamMode) {
try {
image = ImageIO.read(new File("/home/tab/Pictures/Beam"+beamMode+".gif"));
} catch (Exception e) {
e.printStackTrace();
}
this.x = x;
this.y = y;
this.shiftX = shiftX;
this.shiftY = shiftY;
}
Run Code Online (Sandbox Code Playgroud)
New构造函数突出显示,它说:
Constructor CPU in class CPU cannot be applied to given types: …Run Code Online (Sandbox Code Playgroud) 我想从我的Kubernetes集群中的命令行运行一次性容器Pod.我正在寻找相当于:
docker run --rm -it centos /bin/bash
Run Code Online (Sandbox Code Playgroud)
有kubectl同等的吗?
我正在尝试以最基本的方式使用自定义用户模型,扩展AbstractUser如Extending Django的默认用户所述.但是,我不确定如何正确地与南方合作.我在进行初始模式迁移时遇到问题以下是发生的事情:
我的扩展用户类Player在我的课程tournaments中启用了settings.INSTALLED_APPS.
要执行初始化syncdb,tournaments必须启用该应用程序.否则我收到此错误:
$ ./manage.py syncdb
CommandError: One or more models did not validate:
auth.user: Model has been swapped out for 'tournaments.Player' which has not been installed or is abstract.
admin.logentry: 'user' has a relation with model tournaments.Player, which has either not been installed or is abstract.
Run Code Online (Sandbox Code Playgroud)所以,我启用了tournaments具有我的Player(自定义用户)模型的应用程序.但是,在最初的迁移时:
$ ./manage.py schemamigration tournaments --initial
...
$ ./manage.py migrate tournaments
Running migrations for …Run Code Online (Sandbox Code Playgroud)从我在Linux上的测试来看,似乎就是这样
service sshd reload
sshd已经运行时才有效sshd如果sshd_config文件有问题,则停止service sshd restart
sshd已经运行,都可以工作sshd如果sshd_config文件具有无效语法或其他问题,则停止sshd_config文件有问题,则返回非零错误代码我知道他们正在执行不同的操作,但在我看来,我应该总是使用它service sshd restart.有什么理由service sshd reload在某些情况下更可取吗?
几个月前我升级了Git,从那时起,我一直在尝试接受以下弃用通知git add --update:
警告:行为"git的添加--update(或-u)"从树的子目录没有路径参数将在Git的2.0改变,不应再使用.要为整个树添加内容,请运行:
git add --update:/(或git add -u:/)
要将命令限制到当前目录,请运行:
git add --update.(或git add -u.)
使用当前的Git版本,该命令仅限于当前目录.
警告本身非常有意义,它为我节省了一些重置.我已经习惯了输入.或者:/,但仍然发现后者非常奇怪,因为它与我遇到的任何其他命令行语法不同.这.是非常令牌:它只是意味着"当前目录",就像在find .,但:/......从未见过,除非在此上下文中.这是什么意思?
我一直认为它是一个表情符号,当然不是这样吗?
我正在尝试编写一个函数,使得第一个参数是boolean,并且取决于这个参数是true还是false,第二个参数是一个接受 astring或的函数string[]。
这是我的尝试:
type P<B extends boolean> = B extends true ? string[] : string
function callback<B extends boolean>(b: B, t: (f: P<B>) => void) {
const file = 'file'
if (b) {
t([file]) // <-- Error: Argument of type 'string' is not assignable to parameter of type 'P<B>'.
} else {
t(file) // <-- Error: Argument of type 'string[]' is not assignable to parameter of type 'P<B>'.
}
} …Run Code Online (Sandbox Code Playgroud) java ×2
c ×1
c# ×1
constructor ×1
django ×1
django-south ×1
git ×1
javascript ×1
jquery ×1
kubernetes ×1
linux ×1
pointers ×1
ssh ×1
sshd ×1
typescript ×1
unit-testing ×1