在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/測試  網(wǎng)絡(luò)安全  Office/ 「單元測試」A值在300秒后會變成B,我如何測試這個(gè)接口呢?

「單元測試」A值在300秒后會變成B,我如何測試這個(gè)接口呢?

感謝 @betacat 的提醒,我刪掉之前粗糙的例子,舉一個(gè)具體的場景:

假設(shè)我需要對一款策略游戲進(jìn)行測試。當(dāng)前資源 15 單位,資源最少經(jīng)過 300s 才會更新一次,我們按照公式計(jì)算,300s 后資源應(yīng)該是 35 單位。

如果接口的時(shí)間取值是從系統(tǒng)時(shí)間獲取的,我就很難直接偽造。所以請問:我該如何快速的進(jìn)行測試。

不知道各位大佬有什么好想法。


選答蟹蟹:比較全面的測試類書籍或中長篇教程(不限定語言,對“為什么要寫測試”、“好的全面的測試該怎么設(shè)計(jì)”很迷茫),請推薦


@原罪 老師提供了「觀察者模式:測試代碼訂閱事件主題,真正的執(zhí)行程序發(fā)布事件主題。這種耦合是最低的」的答案,雖然沒有解決我「如何快速進(jìn)行測試」的困惑,但的確很有啟發(fā)。

因在評論中,就貼上來供大家參考。再次感謝兩位回答的大佬 :D

回答
編輯回答
法克魷

你說的是前端吧?像mocha或者jasmine等框架,在test時(shí)都會傳入一個(gè)done的結(jié)束函數(shù)。

describe('category', () => {
  it('some test', (done) => {
    // ...some code
    
    setTimeout(() => {
      // ...some code
      done();
    }, 301);
  });
});

執(zhí)行done()即代表測試結(jié)束。

注意,如果你沒有顯性的寫done形參,測試框架會立刻結(jié)束。如果有寫形參,那么你必須執(zhí)行done()才會結(jié)束

2017年11月20日 07:45
編輯回答
獨(dú)白

瀉藥。我建議用msg或者ioc隔離開獲取時(shí)間的操作,然后直接hook msg進(jìn)行偽造時(shí)間的reply,ioc則直接mock一個(gè)fake object來返回偽造的時(shí)間。

2017年2月23日 06:13
編輯回答
護(hù)她命

首先你要回答為什么是300s后這個(gè)value才會變化,業(yè)務(wù)需求還是后臺計(jì)算?

  • 如果只是單純的等待一定長時(shí)間,那么這個(gè)等待值應(yīng)該是可配置的?;诳膳渲玫南到y(tǒng),你可以針對單元測試調(diào)整配置項(xiàng)。
  • 如果是后臺計(jì)算真的很復(fù)雜需要300s,那么這也許是一個(gè)巨型接口,建議針對更內(nèi)部的函數(shù)寫單元測試。

為何寫測試,你可以去閱讀大神Martin Fowler的文章 https://martinfowler.com/arti...

2017年9月15日 20:31