我正在调用此处记录的VSTS拉取请求查询:https://docs.microsoft.com/en-us/rest/api/vsts/git/pull%20request%20query/get?view=vsts-rest-4.1
它返回结果的对象数组。我想检测何时没有返回结果并做出相应的反应。我以为可以检查response.results.length,但是即使没有结果也将是1。它返回一个由1个空对象组成的数组。我很难检测到这种情况。我想到的一个解决方案是:
if(($pullRequests.results | Get-Member -MemberType Properties).Length -eq 0){some code}
由于香草ps对象具有4个成员,并且填充的对象具有附加的note属性,因此它将起作用。我的方法似乎有点荒谬,有没有更好的方法?
我尝试检查长度,存在性和布尔值:
PS> $pullRequests.results[0].Length 1 PS> $temp = $pullRequests.results[0] PS> $temp | Get-Member TypeName: System.Management.Automation.PSCustomObject Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() PS> $temp -eq $null False PS> if($temp){"YAY"}else{"BOO"} YAY
答案 0 :(得分:1)
这听起来像API中的错误。解决方法是,检查 properties (与还包括方法的 members 相反)似乎是正确的方法。完成此ix的最简单方法如下:
// test imports, component import, module import
describe('DumbComponent', () => {
let component: DumbComponent;
let fixture: ComponentFixture<DumbComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
CommonModule,
ReactiveFormsModule,
MyModule,
DumbComponent
]
})
.compileComponents();
fixture = TestBed.createComponent(DumbComponent);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
答案 1 :(得分:0)
哦,那太臭了。
Lemme确保我了解您的问题。返回数据时,您期望的对象看起来像以下内容:
$full_collection_ps_objects = `
@([PSCustomObject]@{a=1;b=2}, [PSCustomObject]@{a=1;b=3})
psobject的集合。
当没有数据返回时,您将获得一个带有一个空psobject的对象数组:
$empty_collection_ps_objects = @([PSCustomObject]@{})
我认为您钉牢了。财产数量是一个很好的指标。我有点神经质。这可能使我感到疑惑,另一个默认属性可能会在以后出现。我可能会考虑寻找特定的字段名称,这种主键类似于:
if( $($empty_collection_ps_objects | Get-Member).Name -contains 'a' ) { $true }
if( $($full_collection_ps_objects | Get-Member).Name -contains 'a' ) { $true }