我的程序包无法识别R中导入的程序包的导出功能

时间:2020-01-03 18:58:39

标签: r r-package

我正在写一个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的某些功能。

1 个答案:

答案 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())。在整个程序包中都要执行此操作,包括任何测试。