I am doing a unit test, but I found this data type that I don't understand.
Error:
Not equal:
expected: <nil>(<nil>)
actual : *pkgname.StructName((*pkgname.StructName)(nil))
FYI, pkgname is a name of a package, StructName is a name of a Struct
How do I make a variable with the same datatype and value of "*pkgname.StructName((*pkgname.StructName)(nil))"?
Is it a pointer of struct to a nil value?
CodePudding user response:
You don't mention which testing framework or method you use, but judging from the error, most certainly the mistake is that you expect a nil value (without type), and you get a nil pointer value which has a pointer type with a concrete base type.
To fix it, you should expect a typed nil value, and not a nil interface value (without type).
For example:
actualValue := ... // Execute function / method / whatever, obtain testable value
// Test it the way you do
// (Here I assume you do it with a function named expectEqual):
expectEqual((*pkgname.StructName)(nil), actualValue)
Note that (*pkgname.StructName)(nil) is a type conversion, it converts the nil (pointer) value to *pkgname.StructName pointer type.
See related questions:
