示例#1
0
文件: run.go 项目: matryer/silk
func (r *Runner) assertDetail(line *parse.Line, key string, actual interface{}, expected *parse.Value) bool {
	if !expected.Equal(actual) {
		actualVal := parse.ParseValue([]byte(fmt.Sprintf("%v", actual)))
		actualString := actualVal.String()
		if v, ok := actual.(string); ok {
			actualString = fmt.Sprintf(`"%s"`, v)
		}

		if expected.Type() == actualVal.Type() {
			r.log(key, fmt.Sprintf("expected: %s  actual: %s", expected, actualString))
		} else {
			r.log(key, fmt.Sprintf("expected %s: %s  actual %T: %s", expected.Type(), expected, actual, actualString))
		}

		return false
	}
	// capture any vars (// e.g. {placeholder})
	if capture := line.Capture(); len(capture) > 0 {
		r.capture(capture, actual)
	}
	return true
}
示例#2
0
文件: run.go 项目: matryer/silk
func (r *Runner) assertData(line *parse.Line, data interface{}, errData error, key string, expected *parse.Value) bool {
	if errData != nil {
		r.log(key, fmt.Sprintf("expected %s: %s  actual: failed to parse body: %s", expected.Type(), expected, errData))
		return false
	}
	if data == nil {
		r.log(key, fmt.Sprintf("expected %s: %s  actual: no data", expected.Type(), expected))
		return false
	}
	actual, ok := m.GetOK(map[string]interface{}{"Data": data}, key)
	if !ok && expected.Data != nil {
		r.log(key, fmt.Sprintf("expected %s: %s  actual: (missing)", expected.Type(), expected))
		return false
	}
	// capture any vars (// e.g. {placeholder})
	if capture := line.Capture(); len(capture) > 0 {
		r.capture(capture, actual)
	}
	if !ok && expected.Data == nil {
		return true
	}
	if !expected.Equal(actual) {
		actualVal := parse.ParseValue([]byte(fmt.Sprintf("%v", actual)))
		actualString := actualVal.String()
		if v, ok := actual.(string); ok {
			actualString = fmt.Sprintf(`"%s"`, v)
		}
		if expected.Type() == actualVal.Type() {
			r.log(key, fmt.Sprintf("expected: %s  actual: %s", expected, actualString))
		} else {
			r.log(key, fmt.Sprintf("expected %s: %s  actual %T: %s", expected.Type(), expected, actual, actualString))
		}
		return false
	}
	return true
}