小编Pau*_*tte的帖子

如何在angular2单元测试中更改选择框的值?

我有一个Angular2组件,其中包含一个看起来像的选择框

<select [(ngModel)]="envFilter" class="form-control" name="envSelector" (ngModelChange)="onChangeFilter($event)">
    <option *ngFor="let env of envs" [ngValue]="env">{{env}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我正在尝试为ngModelChange事件编写单元测试.这是我最近的失败尝试

it("should filter and show correct items", async(() => {
    fixture.detectChanges();
    fixture.whenStable().then(() => {
        el = fixture.debugElement.query(By.name("envSelector"));
        fixture.detectChanges();
        makeResponse([hist2, longhist]);
        comp.envFilter = 'env3';
        el.triggerEventHandler('change', {});
        fixture.whenStable().then(() => {
            fixture.detectChanges();
            expect(comp.displayedHistory).toEqual(longhist);
        });
    });
Run Code Online (Sandbox Code Playgroud)

我遇到问题的部分是更改底层模型的值comp.envFilter = 'env3';不会触发更改方法.我补充说el.triggerEventHandler('change', {});但是这个抛出了Failed: Uncaught (in promise): ReferenceError: By is not defined.我在文档中找不到任何提示......任何想法?

unit-testing typescript karma-jasmine angular2-testing angular

19
推荐指数
3
解决办法
2万
查看次数

如何在Jenkinsfile中设置github pull request构建?

所以,我一直在使用Jenkins.我已经使用Github Pull Request Builder插件设置了许多项目,以便在有人打开拉取请求时运行测试,然后在拉取请求实际合并到主控时触发其他工作(构建,推送,部署等).

那么,有没有办法用Jenkins文件,组织文件夹或multibranch构建交易来设置它?

github jenkins jenkins-workflow jenkins-pipeline

16
推荐指数
1
解决办法
1万
查看次数

如何在Flask中对芹菜任务进行集成/功能测试

我是第一次和Celery合作.我有一些api端点,将启动芹菜任务发送电子邮件.一切都很好 - 我知道如何编写单元测试以确保任务正常工作并确保端点正确调用它(任务被模拟掉).

但是,我相信编写不会模拟任何东西的集成测试.如果我在控制台中运行它,就很容易在测试中调用端点并观察芹菜工作者的输出......但是如果工作者作为守护进程运行,我该如何自动化?

unit-testing celery flask python-2.7

6
推荐指数
0
解决办法
315
查看次数

Kubeadm为什么我的节点没有出现虽然kubelet说它加入了?

我正在使用自动缩放组和Terraform设置Kubernetes部署.kube主节点位于ELB后面,以便在出现问题时获得一些可靠性.ELB的运行状况检查设置为tcp 6443,并且tcp侦听器为8080,6443和9898.所有实例和负载均衡器都属于一个安全组,该组允许组成员之间的所有流量以及来自NAT网关的公共流量地址.我使用以下脚本创建了我的AMI(从入门指南)...

# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
# cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
# apt-get update
# # Install docker if you don't have it already.
# apt-get install -y docker.io
# apt-get install -y kubelet kubeadm kubectl kubernetes-cni
Run Code Online (Sandbox Code Playgroud)

我使用以下用户数据脚本......

kube master

#!/bin/bash
rm -rf /etc/kubernetes/*
rm -rf /var/lib/kubelet/*

kubeadm init \
  --external-etcd-endpoints=http://${etcd_elb}:2379 \
  --token=${token} \
  --use-kubernetes-version=${k8s_version} \
  --api-external-dns-names=kmaster.${master_elb_dns} \
  --cloud-provider=aws
until kubectl cluster-info
do
  sleep 1
done
kubectl apply -f …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services kubernetes terraform

5
推荐指数
1
解决办法
2492
查看次数

Mypy 捕获属性错误

一直在使用以下代码

import yaml
try:
    filterwarnings(yaml.YAMLLoadWarning)
except AttributeError:
    pass
Run Code Online (Sandbox Code Playgroud)

但是当我今天尝试运行 mypy 时,我得到“模块没有属性 YAMLLoadWarning”。这在某些版本的 python 上是正确的。有更好的方法来写这个吗?

编辑:

为了更清楚一点,我知道如何忽略错误(并捕获与 python 3.6 版本的 pyyaml 相关的异常,不包括该异常)。我的问题更多是关于使用解析器。考虑这些例子——

我知道如果你有一个返回更具体类型的函数

def bad(a: Optional[int]) -> int:
    return a  # Incompatible return value type (got "Optional[int]", expected "int")
Run Code Online (Sandbox Code Playgroud)

您可以使用分支强制仅返回正确的类型,并且解析器会注意到

def good(a: Optional[int]) -> int:
    if a:
        return a
    return 0
Run Code Online (Sandbox Code Playgroud)

那么,在使用 try/catch 语句处理错误情况的情况下,是否有一种方法可以构造此语句,以便解析器意识到属性错误已被处理?

def exception_branch(a: Optional[str])-> list:
    try:
        return a.split()  # Item "None" of "Optional[str]" has no attribute "split"
    except:
        return []
Run Code Online (Sandbox Code Playgroud)

python typing mypy

5
推荐指数
1
解决办法
1639
查看次数