public void Testing_Code()
{
var implementationTypeId = Sitecore.Data.ID.NewID;
using (Sitecore.FakeDb.Db db = new Sitecore.FakeDb.Db
{
new Sitecore.FakeDb.DbItem("TestingInstanceItem")
{
new Sitecore.FakeDb.DbField(Templates.sampleTemplates.Fields.countryName){ Value=null }
})
......................
在上面的测试代码中,我将countryName字段分配给Null.But当执行它时将空值作为空字符串。在引用它的存储库中,
testingModel.countryName= testingModelItem.Fields[Templates.sampleTemplates.Fields.countryName] != null ?
testingModelItem.Fields[Templates.sampleTemplates.Fields.countryName].Value : string.Empty;
以下行应为false。但它显示为true
testingModelItem.Fields[Templates.sampleTemplates.Fields.countryName] != null
答案 0 :(得分:0)
替换此
new Sitecore.FakeDb.DbField(Templates.sampleTemplates.Fields.countryName){ Value=null }
用这个
new Sitecore.FakeDb.DbField(Templates.sampleTemplates.Fields.countryName){ Value=DBNull.Value }
而不是!= null(针对数据库的每个测试) 做
if (! DBNull.Value.Equals(testingModelItem.Fields[Templates.sampleTemplates.Fields.countryName]))
{
//not null
}
else
{
//null
}
答案 1 :(得分:0)
首先,您发布的代码确实返回字段而不是值(Sitecore.Data.Fields.Field
类的实例而不是{{1} }):
string
仅当模板中没有此类字段时,它才能为testingModelItem.Fields[Templates.sampleTemplates.Fields.countryName]
。如果您想获得字段值,则应使用
null
中学,从字段中获取testingModelItem.Fields[Templates.sampleTemplates.Fields.countryName]?.Value
值是不可能的(至少8.0+)。 (非常)旧版本可能但现在null
属性用空字符串替换Value
:
null