当我想执行我的测试时,我曾经--single-run
激活了选项,但在升级到Angular 6后,它不再被识别.
> ng test --source-map=false --single-run --no-progress --browsers=ChromeNoSandbox
Run Code Online (Sandbox Code Playgroud)
未知选项:' - singleRun'
Angular CLI 6中对于--single-run的等效选项是什么?
JUnit 5不会在使用注释注释的测试类中调用我的方法@BeforeEach
,其中我初始化测试中所需的测试对象的一些字段.当试图在测试方法(注释方法@Test
)中访问这些字段时,我显然得到一个NullpointerException.所以我在方法中添加了一些输出消息.
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class TestClass {
private String s;
public TestClass() {
}
@BeforeEach
public void init() {
System.out.println("before");
s = "not null";
}
@Test
public void test0() {
System.out.println("testing");
assertEquals("not null", s.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
在运行测试的输出中,mvn clean test
我从test0()
注释@Test
注释的方法中获取"测试"消息,但不打印"之前"消息.
Running de.dk.spielwiese.TestClass
!!!testing!!!
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
de.dk.spielwiese.TestClass.test0() Time elapsed: 0 sec <<< FAILURE! …
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的表单,只有一个输入字段:
this.form = this.fb.group({
emailAddress: ['', [Validators.required, Validators.email]],
});
Run Code Online (Sandbox Code Playgroud)
标记:
<input type="email" class="form-control" formControlName="emailAddress">
Run Code Online (Sandbox Code Playgroud)
该字段有两个验证器,必填和用于电子邮件。
我还有一个提交按钮,配置如下:
<button [disabled]="!form.valid" type="submit">Send</button>
Run Code Online (Sandbox Code Playgroud)
令人困惑的部分是,当我输入错误的电子邮件地址时,例如:
一个@b
提交按钮被启用,从而将表单和输入字段标记为有效。我希望这a@b
不是一个有效的电子邮件地址。
我应该使用其他任何角度的电子邮件验证器还是这是一个错误?
我有一个非常简单的服务电话和茉莉花测试.
服务电话:
myServiceCall(testId: number) : void {
const url = `${this.url}/paramX/${testId}`;
this.http.put(url, {},{headers: this.headers}).subscribe();
}
Run Code Online (Sandbox Code Playgroud)
我的测试方法:
it('should call myServiceCall', inject([MyService], (service: MyService) => {
let testId = undefined;
service.myServiceCall(testId);
let req = httpMock.expectOne(environment.baseUrl + "/paramX/123");
expect(req.request.url).toBe(environment.baseUrl + "/paramX/123");
expect(req.request.body).toEqual({});
req.flush({});
httpMock.verify();
}));
Run Code Online (Sandbox Code Playgroud)
我当然是一个例外,因为我希望url参数为"123"而不是像这个测试用例场景中那样未定义.
错误:预期一个匹配的条件请求"匹配URL: http:// localhost:8080/myservice/paramX/123 ",找不到.
我不明白的是测试框架说的原因
找不到
虽然提出了要求.是否有可能让测试框架告诉我其他实际调用是什么,类似于mockito的验证?
将我的 Web 应用程序从 spring boot 1.5.10 升级到 spring boot 2.0.0 后,我在访问单个实体时遇到了一些运行时异常。
org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话
我的存储库:
public interface MyRepository extends JpaRepository<MyEntity, Long> {
}
Run Code Online (Sandbox Code Playgroud)
在我的一项服务中,我调用了 spring data 1.xmyRepository.findOne(id);
来获取单个实体。但是 findOne(Long id) 方法在 spring data 2 中被删除了,所以我不得不切换到另一种方法。
我发现JpaRepository#getOne(ID id);
切换findOne
到getOne
所有测试后都通过并且是绿色的。但是在运行时我收到了上面提到的异常。org.hibernate.LazyInitializationException
于是又搜索了合适的方法,发现 CrudRepository#findById(ID id)
这次一切都解决了,我很高兴,但现在的问题是,为什么我org.hibernate.LazyInitializationException
在使用时得到了getOne()
?
在将jasmine-core升级到3.1.0之后,我还想将karma-jasmine-html-reporter升级到最新版本1.1.0
npm i --no-optional
Run Code Online (Sandbox Code Playgroud)
结果是
npm WARN karma-jasmine-html-reporter@1.1.0需要jasmine @> = 3的同伴,但没有安装.您必须自己安装对等依赖项.
我的package.json与devDepenencies
"devDependencies": {
"@angular/cli": "^6.0.8",
"@angular/compiler-cli": "^6.0.4",
"@angular/language-service": "^6.0.4",
"@types/jasmine": "^2.8.8",
"@types/node": "10.1.2",
"jasmine-core": "~3.1.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.2",
"karma-chrome-launcher": "~2.2.0",
"karma-cli": "~1.0.1",
"karma-ie-launcher": "^1.0.0",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^1.1.0",
"protractor": "~5.3.2",
"tslint": "~5.10.0",
"typescript": "2.7.2",
"@angular-devkit/build-angular": "~0.6.8"
}
Run Code Online (Sandbox Code Playgroud)
我错了假设jasmine-core == @jasmine?这里有什么我想念的吗?
我在 Angular 5 中有一个反应式形式,它正在工作。该表单有 eq 一个输入字段和一个复选框。
<div class="form-group" *ngIf="!myForm.controls.myCheckbox.value">
<input class="form-control" formControlName="myField"
</div>
<div class="form-group">
<input type="checkbox" formControlName="myCheckbox">
</div>
Run Code Online (Sandbox Code Playgroud)
复选框用于处理输入字段的可见性:如果选中的输入字段是不可见的,反之亦然。
我正在使用 TestBed 使用 jasmine 编写测试来配置 componentFixture。
我尝试获取 formControl 并检查是否存在,例如使用以下语句,但它不起作用。
let myField= component.driverForm.controls['myField'];
let myCheckbox= component.driverForm.controls['myCheckbox'];
myCheckbox.setValue(true);
fixture.detectChanges();
expect(myField).toBeFalsy("myField not existing");
Run Code Online (Sandbox Code Playgroud)
预期 FormControl( ... ) 为假“myField 不存在”。
我现在的问题是,当单击茉莉花测试中的复选框时,如何测试表单控件“myField”是否可见/不可见?
将我的休息服务从 Spring Boot 1.5.10 升级到 2.0.0 后,我遇到了之前通过的测试失败。
以下场景:
import org.mockito.internal.matchers.Null;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
...
.andExpect(jsonPath("img").value(Null.NULL))
Run Code Online (Sandbox Code Playgroud)
现在在 Spring MVC 5 中失败并显示以下消息:
java.lang.AssertionError:JSON 路径“img”
预期:isNull() 实际:null
Spring MVC 5 中断言 the 值的正确方法jsonPath
是null
什么?
从Wicket 7升级到Wicket 8后,我在IntelliJ中遇到了多个擦除警告.
例如,当使用AjaxLink
IntelliJ抱怨时
'org.apache.wicket.MarkupContainer'中的'setDefaultModel(IModel model)'与'org.apache.wicket.IGenericComponent'中的'setDefaultModel(IModel model)'冲突; 两种方法都有相同的擦除但不会覆盖另一种方法
我能做些什么吗?
angular ×5
jasmine ×3
java ×3
spring-boot ×2
hibernate ×1
junit5 ×1
maven ×1
mockito ×1
spring ×1
spring-data ×1
spring-mvc ×1
spring-test ×1
validation ×1
wicket ×1
wicket-8 ×1