1

データベースの単体テストの作成を開始したところです。

私がテーブルを偽造した場合、

EXEC tSQLt.FakeTable
    @TableName = 'dbo.[My Table]',
    @Identity = 0,
    @ComputedColumns = 0,
    @Defaults = 0

偽物かどうか確認できますか?

FakeTable SP に関するドキュメントは、ここにあります。

動機

テストを実行できるように、これらの偽のテーブルにデータを入力するいくつかのストアド プロシージャを作成することを想像しているので、これを実行できるようにしたいと考えています。ただし、ストアドプロシージャでテーブルの偽造を処理したくありません(そのため、毎回異なる情報を入力して複数回呼び出すことができます)。

データを追加する前にテーブルを偽造するのを忘れる可能性は望んでいません (ほぼ確実にテストに失敗する可能性があります)。

4

2 に答える 2

-1

ストアド プロシージャの先頭でテーブルの存在を確認できます。

If Not Exists ( Select 1 From Sys.Objects Where [Name] = 'YOURTABLENAME' And [Type] = 'U')
  Begin
  -- Your Create Table Statement Here
  ENd

コメントに基づいて、ツールはスキーマを使用して次のようなことを行う必要があります。

Create table dbo.MisterPositive ( test int )
Create table developers.MisterPositive (test Int )

-- Both statements below work
Select * From dbo.MisterPositive
Select * From developers.MisterPositive

-- これを使用して、以前の存在を探します

Select 1 from sys.objects
  Inner join sys.schemas ON sys.objects.schema_id = sys.schemas.schema_id
 where sys.objects.[Name] = 'MisterPositive' And sys.schemas.name = 'dbo'

 Select 1 from sys.objects
  Inner join sys.schemas ON sys.objects.schema_id = sys.schemas.schema_id
 where sys.objects.[Name] = 'MisterPositive' And sys.schemas.name = 'Developers'

だからあなたのものは

 If Not Exists ( Select 1 from sys.objects
  Inner join sys.schemas ON sys.objects.schema_id = sys.schemas.schema_id
 where sys.objects.[Name] = 'YOURTABLE' And sys.schemas.[Name] = 'tSQLt' )
   Begin
     -- create table here
   End
于 2016-12-15T14:38:17.127 に答える