当返回值仅用于父级时,如何对测试类属性进行单元化

时间:2017-12-10 04:09:49

标签: c# unit-testing

好吧,我想不出如何正确地说出这个问题,但是一个例子会清除它。假设我有这个课程:

public class Subject
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Subject> Children { get; set; }
}

因此,一个主题有一系列主题,而这些主题又可以有主题。然后我有这个方法。这可以保存主题和主题的孩子,如果有的话:

public int CreateSubject(Subject newSubject)
{
    //...
}

创建主题后,将返回新的ID。所以在我的单元测试中,我可以通过检查返回值是否为零来测试我是否创建了一个主题。现在,我有一个测试名为返回Id的资产:

CreateSubject_ValidValues_CreatesSubject

但我意识到即使孩子们没有得救,这也可能成功。我希望有类似的东西:

CreateSubject_ValidValuesWithValidChildren_CreatesSubjectAndChildren

但我不确定如何检查孩子是否成功保存。我不确定该断言。我如何测试这样的东西?

1 个答案:

答案 0 :(得分:0)

简单:您无法测试CreateSubject( )是否正在创建有效主题,除非您有另一个函数,然后通过返回的ID获取它。有用的&#34;单位&#34;在这种情况下测试不是函数CreateSubject,而是任何单元负责Subject对象的创建/检索等。