Angular2+ - 作为变量传递时找不到模块 - 测试
Angular2+ - Cannot find module when passed as variable - testing
在我的测试中,我需要一个 .json 文件,其中包含我要检查的数据。但是,我似乎无法将在哪里找到它的字符串传递到 require...
工作代码
const data = require('../../../assets/data.json');
不起作用
const jsonUrl = '../../../assets/data.json';
const data = require(jsonUrl);
我想使用变量 jsonUrl
,因为这个 url 字符串将在测试本身中使用几次。就是不明白为什么找不到?
问题修正:
由于模拟是进行此操作的方法,我不确定具体如何操作...我正在修改问题以帮助解决此问题。
根据我对测试的想法,我假设我需要读入我实际使用的数据,然后用它进行测试。如果我说错了请指正。
这是我正在测试的...
data.json
[
{
"name": "one",
"id": 1,
},
...
// This format is used for approx 20 entries
]
component.ts
ngOnInit() {
loadData().subscribe(data => {
this.data = data;
};
}
loadData() {
const statusUrl = '../../../assets/data.json';
return this.httpClient.get(statusUrl);
}
test.ts 由于上述require问题,接收找不到模块
it('should load status data from local json', fakeAsync(() => {
const jsonUrl = '../../../assets/status.json';
const data = require(jsonUrl);
const request = httpMock.expectOne(jsonUrl);
request.flush(data);
expect(component.status).toEqual(data);
}));
通过使它等于任何类型的对象解决了这个问题:
it('should load status data from local json', fakeAsync(() => {
const jsonUrl = '../../../assets/greyhound.status.json';
const data = [];
const request = httpMock.expectOne(jsonUrl);
request.flush(data);
expect(component.raceStatuses).toEqual(data);
}));
在我的测试中,我需要一个 .json 文件,其中包含我要检查的数据。但是,我似乎无法将在哪里找到它的字符串传递到 require...
工作代码
const data = require('../../../assets/data.json');
不起作用
const jsonUrl = '../../../assets/data.json';
const data = require(jsonUrl);
我想使用变量 jsonUrl
,因为这个 url 字符串将在测试本身中使用几次。就是不明白为什么找不到?
问题修正:
由于模拟是进行此操作的方法,我不确定具体如何操作...我正在修改问题以帮助解决此问题。
根据我对测试的想法,我假设我需要读入我实际使用的数据,然后用它进行测试。如果我说错了请指正。
这是我正在测试的...
data.json
[
{
"name": "one",
"id": 1,
},
...
// This format is used for approx 20 entries
]
component.ts
ngOnInit() {
loadData().subscribe(data => {
this.data = data;
};
}
loadData() {
const statusUrl = '../../../assets/data.json';
return this.httpClient.get(statusUrl);
}
test.ts 由于上述require问题,接收找不到模块
it('should load status data from local json', fakeAsync(() => {
const jsonUrl = '../../../assets/status.json';
const data = require(jsonUrl);
const request = httpMock.expectOne(jsonUrl);
request.flush(data);
expect(component.status).toEqual(data);
}));
通过使它等于任何类型的对象解决了这个问题:
it('should load status data from local json', fakeAsync(() => {
const jsonUrl = '../../../assets/greyhound.status.json';
const data = [];
const request = httpMock.expectOne(jsonUrl);
request.flush(data);
expect(component.raceStatuses).toEqual(data);
}));