PesterObject - 不可能なテストの評価 -- powershell フィールド と pester フィールド 関連 問題

Pester test evaluating PSCustomObject - unable












0
vote

問題

日本語

誰かが助けることができることを願って、簡単な質問をしています。

PSCustomObjectを使用して作成された返されたオブジェクト(ハッシュテーブル)に対して結果を検証するペスタの単体テストを書きましたが、明確にする方法はわかりません。

<事前> <コード> $result = get-dataFromOverThere $result | Should -Be [PSObject]

ペスターを呼び出した後、私は得る:

<事前> <コード> Expected '[PSCustomObject]', but got @{ name = "bob"; company = "vance refrigeration"}.

技術的に私が望んだ正しい値でしたが、テストの最後の部分を最後に決定する方法がわからない

英語

i have a simple question, hoping someone could help.

I wrote a unit test in pester where it verifies the result against the returned object (a hash table) created using PSCustomObject, but I am not sure how to definite it:

$result = get-dataFromOverThere $result | Should -Be [PSObject] 

after invoking pester, I get:

Expected '[PSCustomObject]', but got @{ name = "bob"; company = "vance refrigeration"}. 

it technically was the correct value I wanted, but not sure how to definite the last portion of the test

</div
     
 
 

回答リスト

0
 
vote

基礎となるタイプを比較する必要があるため、 $result とクラス [PSObject] のクラス [PSObject] を比較するためです。 。代わりに、これを試してください。

<事前> <コード> $result.GetType().Name | should -be 'PSCustomObject' #or $result.GetType().Name -eq 'PSCustomObject' | should -be $true

どちらの構文が機能するはずです。

 

You need to compare the underlying types, because the comparison you have today is comparing the whole object you have in $result versus the Class [PSObject], which won't work. Instead, try this.

$result.GetType().Name | should -be 'PSCustomObject' #or $result.GetType().Name -eq 'PSCustomObject' | should -be $true  

Either syntax should work, Mr. Vance.

</div
 
 
0
 
vote

私はより詳細を提供する必要がありますが、私は、テストに必要な値を持つハッシュテーブルを返したモックを作成する解決方法を発見しました。つまり、特定のシナリオの出力を実際に検証できます。もう一度ありがとう。

 

I should have provided more detail, but I discovered a resolution that involved creating an mock that returned a hash table with the values I required to test. Meaning, I could actually verify the output for certain scenarios. Thanks again.

</div
 
 
0
 
vote

作業解決策実際の確認は予想されるタイプ

<事前> <コード> Describe "return type" { It "should have type [pscustomobject]" { $actual = [pscustomobject]@{a = 1} $actual | Should -BeOfType [pscustomobject] } }

PS7.0.3とPester 5.0.4で確認しました

オブジェクトのプロパティと値のみを確認したい場合は、このようにすることができます。

<事前> <コード> # Install-Module Functional Import-Module Functional Describe "return values" { It "checks that the actual object has correct properties and values" { $actual = [pscustomobject]@{a = 1} $expected = [pscustomobject]@{"a" = 1} $actual, $expected | Test-Equality | Should -BeTrue } }
 

Working solution to check the actual is of expected type:

Describe "return type" {   It "should have type [pscustomobject]" {     $actual = [pscustomobject]@{a = 1}     $actual | Should -BeOfType [pscustomobject]   } } 

Checked with PS7.0.3 and Pester 5.0.4

If you want to check the object has only expected properties and values, then you can do it this way:

# Install-Module Functional Import-Module Functional  Describe "return values" {   It "checks that the actual object has correct properties and values" {     $actual = [pscustomobject]@{a = 1}     $expected = [pscustomobject]@{"a" = 1}     $actual, $expected | Test-Equality | Should -BeTrue   } } 
</div
 
 

関連する質問

1  ペスターリセットテストデータ  ( Pester reset test data ) 
これはペスタのテストデータの範囲についてです。これが存在しない場合は、それが存在しない場合、そのキーにリンクされた値を返す関数 Add-HashTableIfNotPresent をテストしています。それ以外の場合は追加されます。 2つのシナリオをチェックす...

0  Pesterでテストが完了したASP.Netコアアプリのコードカバレッジ  ( Code coverage of asp net core app with test done in pester ) 
PesterとPowerShell RESTクライアントを使用してテストされているRESTサービス(PowerShellの<コード> Invoke-RestMethod とFriends)を使用してテストされています。 それのためのコードカバレッジをどのよう...

2  Invoke-Pesterを使用して動作していないモック書き込み冗長  ( Mock write verbose not working when with invoke pester ) 
下記のスクリプトは、DOTで実行されたが、Invoke-Pesterで呼び出されたときに実行されない場合(Pester Version 4.6.0の実行)。私は間違ったことをしていますか、またはInvoke-Pesterの問題がありますか? <事前> <コード...

1  テンプレート検証エラー - エラー:code = invalidtemplate; message =展開テンプレート検証に失敗しました。  ( Template validation error error code invalidtemplate message deployment temp ) 
下のテンプレートを展開するトラブルが多いです。 href="https://i.stack.imgur.com/mbbmp.jpg" rel="nofollow noreferrer"> azuredeploy.jsonファイル スローしたエラーメッセージ...

4  Pester:スクリプトを実行してもらうのですか?  ( Pester how do i keep my script from running ) 
PowerShellスクリプトをテストしています。スクリプト全体を実行せずに個々の機能をテストしたいのですが。これが目的のユースケースであるかサポートされているかどうかわからない、そして私はオンラインで良い答えを検索していません sut.ps1: <事前>...

1  パイプラインコマンドを扱うためにペスターを設定する方法  ( How to finagle pester to work with pipelined commands ) 
このPowerShell関数は、 not を含むファイルを識別します。 <事前> <コード> function GetFilesLackingItem([string]$pattern) { Get-ChildItem | ? { !( Select-...

2  in-in in mockスクリプトブロックから外部変数にアクセスする(Pester)  ( Access external variable from with in mock script block pester ) 
ふりをする... <事前> <コード> function Get-Something { return Get-DogShit } ...私のPesterテストスクリプトで... <事前> <コード> $var = 1 Mock 'Get-Do...

1  PSusedEclaredVarsMorethanAssignmentを使用したペスターテスト  ( Pester tests with psusedeclaredvarsmorethanassignment ) 
PSSESTERスクリプトの Describe ブロックで変数が宣言され、 It ブロックで使用されている場合、PSScriptAnalyzerはその使用法を認識しません。変数。 " 警告を取り除くために変数を宣言するか、 PSUseDeclared...

7  Pesterでモッキングするときは、スイッチパラメータを使用してParameterFilterをユーザーにユーザーにユーザーにユーザーを使用できますか?  ( How can i user a parameterfilter with a switch parameter when mocking in pester ) 
Pestestを使用して、他のパラメータの中でもスイッチの中にある高度な機能をモッキングしています。スイッチパラメータを含むモックに -parameterFilter を作成するにはどうすればよいですか? 私は試してみました: <事前> <コード> bin/...

69  PowerShellでTDDとユニットテストを行う方法  ( How to do tdd and unit testing in powershell ) 
MSラミングPowerShellをすべての新しいサーバー製品に入っているので、(絶えず)私がそれを真剣に受け止める必要があると思います。 「真剣に取り込む」の一部はTDDです。あなたは単体テストパワーシェルスクリプトに良い方法を見つけましたか? Mr ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有