第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從測試方法傳遞空對象

從測試方法傳遞空對象

C#
寶慕林4294392 2021-09-19 15:59:00
我有一個類Class1,它有一個構(gòu)造函數(shù)和幾個方法。對于這些方法,我正在使用 MSTest 編寫單元測試用例。這堂課看起來像這樣。class Class1{    Order order = new Order(); // there is an class Order    public Class1(Order _order)    {        order = _order;    }    public virtual async Task<bool> GetData()    {        if(order != null)        {            //do something        }        else        {            // do something else        }    }}現(xiàn)在,我必須為此 GetData() 方法編寫 2 個測試用例,分別測試 if 塊和測試 else 塊。我能夠成功測試 if 塊,但無法測試 else 塊。我正在嘗試編寫的測試方法如下。[TestMethod()]public void GetDataTest(){    Order order = new Order();    order = null;    var mockService = new Mock<Class1>(order)    {        CallBase = true    };    var result = await mockService.Object.GetData(); // error thrown from here    Assert.IsFalse(result);}我想要做的是將訂單對象設(shè)置為空并將空對象傳遞給構(gòu)造函數(shù)。但這會引發(fā)一些錯誤“找到歧義匹配”。顯然,傳遞空值在這里不起作用。所以任何人都可以告訴我測試 else 塊的任何其他工作。PS:我需要測試 if 和 else 塊,以便將其包含在代碼覆蓋率中。
查看完整描述

3 回答

?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗 獲得超5個贊

如果您的代碼是真實的,那么實際上不需要模擬被測服務(wù)。


這工作得很好:


[TestMethod]

public async Task GetDataTest()

{

    //Arrange

    Order order = null;

    var c1 = new Class1(order);


    //Act

    var result = await c1.GetData();


    //Assert

    Assert.IsFalse(result);

}


查看完整回答
反對 回復(fù) 2021-09-19
?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗 獲得超4個贊

您必須從“GetData()”返回


public virtual async Task<bool> GetData()    

{

    if(order != null)

    {

        //do something

    }

    else

    {

        // do something else

    }

//return task here with await keyword;

}


查看完整回答
反對 回復(fù) 2021-09-19
?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊

好吧,單元測試用例和您共享的代碼沒有任何問題


除了


您沒有返回任務(wù),并且錯誤“找到了歧義匹配”看起來來自編寫在 else 塊中的代碼內(nèi)部。


嘗試將您的GetData()方法更改為:


public virtual async Task<bool> GetData()

        {

            TaskCompletionSource<bool> ts = new TaskCompletionSource<bool>();

            if (order != null)

            {

                //do something

                ts.SetResult(true);

            }

            else

            {

                // do something else

                ts.SetResult(false);

            }

            return await ts.Task;

        }


查看完整回答
反對 回復(fù) 2021-09-19
  • 3 回答
  • 0 關(guān)注
  • 241 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號