我正在为angular2服务编写单元测试.代码片段:
// jasmine specfile
// already injected MockConnection into Http
backend.connections.subscribe ((c: MockConnection) => {
connection = c;
});
// doing get-request
myServiceCallwithHttpRequest ().subscribe (result => {
// this test passes!
expect (result).toEqual ({
"message": "No Such Object"
});
// this test fails, don't know how to get the response code
expect (whereIsResponseStatus).toBe (404);
});
connection.mockRespond (new Response (new ResponseOptions ({
body: {
"message": "No Such Object"
},
status: 404
})));
Run Code Online (Sandbox Code Playgroud)
我的服务:
// service
myServiceCallwithHttpRequest (): Observable<Response> {
return this.http.get …
Run Code Online (Sandbox Code Playgroud) 在我的形式:
<form>
<label class="form-check-label">
<input [(ngModel)]="options.o1" name="o1"
type="checkbox" class="form-check-input" >
Option 1
</label>
<label class="form-check-label">
<input [(ngModel)]="options.o2" name="o2"
type="checkbox" class="form-check-input" >
Option 2
</label>
</form>
Run Code Online (Sandbox Code Playgroud)
我想在两个复选框中的一个被更改时被通知,而不是通过向每个复选框添加事件处理程序,而是通过向表单添加事件处理程序,实际上表单中还有更多字段.
我知道如何链接promises以便执行多个成功函数.在许多例子中都提到了这一点.如何链接promises以便执行多个错误函数?
如何定义类型
string|string[]|string[][]|string[][][] // ad infinitum
Run Code Online (Sandbox Code Playgroud)
在打字稿中?
编辑:解决方案是:
type Rec = string | string[] | Rec[]
Run Code Online (Sandbox Code Playgroud)
但这是不允许的。
这是我的用例:
interface RecursiveArray<T> {
[index: number]: (RecursiveArray<T> | T);
}
type Recursive<T> = T|RecursiveArray<T>
function stringValue (value: Recursive<string|boolean>): Recursive<string> {
if (typeof value === 'boolean') {
return value ? 'true' : 'false';
}
if (Array.isArray (value)) {
return (value).map (stringValue);
}
return stringValue(value);
}
Run Code Online (Sandbox Code Playgroud) 我想用业力来测试我的angular2应用程序,但是我得到了一个打字稿错误:
/my/path/node_modules/angular2/src/testing/matchers.d.ts
错误:(4,37)TS2503:找不到命名空间'jasmine'.
安装了NPM模块,typescript编译器运行良好.怎么了?
myservice.serviceSpec.ts:
import {it, describe, expect, beforeEach, inject} from
'angular2/testing';
import {myService} from "../app/myservice.service";
describe('Tests', () => {
it('should be true', () => {
expect(true).toBe(true);
});
});
Run Code Online (Sandbox Code Playgroud)
的package.json:
{
"name": "myapp",
"version": "0.1.0",
"dependencies": {
"angular2": "^2.0.0-beta.2",
"es6-promise": "^3.0.2",
"es6-shim": "^0.33.13",
"reflect-metadata": "^0.1.2",
"rxjs": "^5.0.0-beta.0",
"systemjs": "^0.19.17",
"zone.js": "^0.5.10"
},
"devDependencies": {
"jasmine-core": "^2.4.1",
"karma": "^0.13.19",
"karma-chrome-launcher": "^0.2.2",
"karma-coverage": "^0.5.3",
"karma-jasmine": "^0.3.7",
"remap-istanbul": "^0.5.1"
}
}
Run Code Online (Sandbox Code Playgroud)
tsconfig.json:
{
"compilerOptions": {
"target": "ES5",
"module": "system",
"moduleResolution": "node",
"sourceMap": …
Run Code Online (Sandbox Code Playgroud) 当我在输入字段中更改值时,相应的表单控件将被设置为脏。当我还原更改(通过在输入字段中键入)时,表单控件保持脏状态。这是故意的,这是错误还是我做错了?
我想从问题库构建一个动态表单,就像 angular2 中的动态表单食谱一样。所以我有一个 QuestionComponent:
<div [formGroup]="form">
<ul *ngIf="question.multi" [formArrayName]="question.key">
<li *ngFor="let control of form.get(question.key).controls; let lix=index">
<div>
<app-text-box [controlName]="lix"></app-text-box>
</div>
</li>
</ul>
<div *ngIf="!question.multi">
<app-text-box [controlName]="question.key"></app-text-box>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
基于question.multi
有一个单一的FormControl或一个FormArray。表单输入位于 TextBoxComponent 中:
<input class="form-control"
[formControlName]="controlName"
[id]="controlName" type="text">
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
./TextBoxComponent 类 TextBoxComponent 中出现错误 - 内联模板:0:28 原因如下: formControlName 必须与父 formGroup 一起使用
如何将 FormGroup 的信息获取到组件中?
我尝试了这种方式:QuestionComponent:
<div [formGroup]="form" class="col-md-10" >
<ul *ngIf="question.multi" [formArrayName]="question.key" class="list-group">
<li *ngFor="let control of form.get(question.key).controls; let lix=index">
<div>
<app-text-box [form]="form" [arrayName]="question.key" [controlName]="lix"></app-text-box>
</div>
</li>
</ul>
<div *ngIf="!question.multi">
<app-text-box …
Run Code Online (Sandbox Code Playgroud) 如何在curl配置文件中添加用于设置自定义标头的选项?以下两行均无效:
Header = 'x-abc: xyz'
header = 'x-abc: xyz'
Run Code Online (Sandbox Code Playgroud) 我可以在 minikube 集群上设置 Ingress,如本教程所示: https ://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
但是,只能从运行 minikube 的主机在 minikube IP 上访问该服务。
如何启用来自其他主机的连接?
angular ×5
typescript ×3
forms ×2
angularjs ×1
curl ×1
deferred ×1
http ×1
http-headers ×1
jasmine ×1
minikube ×1
promise ×1
unit-testing ×1