doStuff
기능을 테스트하려면 어떻게해야합니까? (운동장 : http://play.golang.org/p/aPFSlaBLgX) 즉Deferred Go 문을 테스트하는 방법은 무엇입니까?
package myPackage
var locked = false
func doStuff() {
defer unlock()
lock()
// some task that can cause errors
// need to test if lock was really unlocked
// this is just a simple example, things can go complex on real world
panic("!")
}
func lock() {
locked = true
}
func unlock() {
locked = false
}
: 어떻게 defer
문을 사용하는 코드를 테스트? 지연 호출을 테스트하기 위해 일반적인 전략을 사용해야합니까? 일반적인 관행이없는 경우이 특정 코드를 테스트하는 방법은 무엇입니까?
PS : 놀이터는 package main
어떤 목적으로? 지연된 메소드가 실행되었음을 주장하려고합니까? –
예, 지연 호출에 예상되는 효과가 있음을 주장하려고합니다. 이 예제에서 예상되는 효과는 "잠금 해제 됨"을 표준 출력에 인쇄하는 것입니다. – marcio
'sync.Mutex'를 테스트하려면 이미 잠금이 해제되어야 할 때 잠금을 해제해야합니다. 이 경우 가로 채기가 필요한 런타임 오류가 발생합니다. "m 잠금을 해제하면 m 잠금이 해제됩니다"http://golang.org/pkg/sync/#Mutex.Unlock에 m 항목이 잠기지 않으면 런타임 오류가 발생합니다. 테스트는 항상 지연된 함수가 프로그램을 예상 된 상태로 유지했는지 확인하는 것이므로 실제로는 일반적인 대답이 없습니다. – Intermernet