我有一个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
所以,我一直在使用Jenkins.我已经使用Github Pull Request Builder插件设置了许多项目,以便在有人打开拉取请求时运行测试,然后在拉取请求实际合并到主控时触发其他工作(构建,推送,部署等).
那么,有没有办法用Jenkins文件,组织文件夹或multibranch构建交易来设置它?
我是第一次和Celery合作.我有一些api端点,将启动芹菜任务发送电子邮件.一切都很好 - 我知道如何编写单元测试以确保任务正常工作并确保端点正确调用它(任务被模拟掉).
但是,我相信编写不会模拟任何东西的集成测试.如果我在控制台中运行它,就很容易在测试中调用端点并观察芹菜工作者的输出......但是如果工作者作为守护进程运行,我该如何自动化?
我正在使用自动缩放组和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)
我使用以下用户数据脚本......
#!/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) 一直在使用以下代码
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) unit-testing ×2
angular ×1
celery ×1
flask ×1
github ×1
jenkins ×1
kubernetes ×1
mypy ×1
python ×1
python-2.7 ×1
terraform ×1
typescript ×1
typing ×1