我正在写一个R包。 使用roxygen2,我有以下处理器语句:
[AcceptVerbs("Post")]
public ActionResult Editing_Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<ProductViewModel> products)
{
var results = new List<ProductViewModel>();
if (products != null && ModelState.IsValid)
{
foreach (var product in products)
{
productService.Create(product);
results.Add(product);
}
}
return Json(results.ToDataSourceResult(request, ModelState));
}
据我了解,该语句将从Other_Package导入每个导出的函数。 但是当我跑步时:
##' @import Other_Package
某些测试用例失败,因为它无法找到Other_Package的某些功能。
答案 0 :(得分:2)
确保在描述文件中包含Other_Package
。您可以通过以下方法很容易地做到这一点:
usethis::use_package("Other_Package")
此外,请确保在测试之前重新渲染文档。这将包括重新创建您的NAMESPACE文件。 roxygen2
非常好,它将为您处理这一部分:
devtools::document()
要确认,请转到您的NAMESPACE文件并确保在其中找到import(Other_Package)
。使用roxygen2
时,请勿手动编辑NAMESPACE文件。
现在,您的测试应该可以正常运行:
devtools::test()
建议您不要依赖您的NAMESPACE,而应在包内进行显式调用。因此Other_Package
中的任何函数都将带有Other_Package::
前缀(例如function1()
将是Other_Package::function1()
)。在整个程序包中都要执行此操作,包括任何测试。