NativeScript-单元测试HttpInterceptor NSLocationStrategy错误

时间:2020-03-24 14:09:20

标签: angular unit-testing http nativescript angular-http-interceptors

我正在使用NativeScript 6.4.1和Angular 8编写应用程序。

我想为HttpInterceptor编写单元测试。我的拦截器会添加一个令牌来选择http调用,如果用户从后端收到某些错误,则会将他们路由到身份验证页面。

代码可以正常运行,并且可以运行,但是我的单元测试不起作用。

运行单元测试时,出现此错误:

driver.get('https://www.amazon.com/international-sales-offers/b/?ie=UTF8&node=15529609011&ref_=nav_navm_intl_deal_btn')
checkCSS = "[class='a-row a-spacing-small filterItem']:nth-of-type(1) .a-checkbox.checkbox.a-spacing-micro"
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, checkCSS)))
departments = len(driver.find_elements_by_css_selector(checkCSS))

for depNum in range(departments):
    print(depNum)
    if depNum == 12:
        WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, "span.a-expander-prompt"))).click()
        time.sleep(1)
    WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, checkCSS)))
    driver.find_elements_by_css_selector(checkCSS)[depNum].click()

我不知道为什么会收到错误消息。

这是我的单元测试:

HashRouter

这是我的拦截器:

import {
  Router //replace Router
} from "react-router-dom";

ReactDOM.render(
    <LocaleProvider locale={enUS}>
    <Provider store={Store}>
        <Router history={history}> //replace here saying Router
            <Layout/>
        </Router>
    </Provider>
</LocaleProvider>, document.getElementById("app"));
registerServiceWorker();

1 个答案:

答案 0 :(得分:1)

您必须将NativeScriptRouterModule加载为NativeScriptRouterModule.forRoot([]),这与在具有可用路由的应用模块中加载路由器类似。由于是单元测试,因此您不会在此处传递路线。